如何使用fitnesse连接到远程瘦身服务器

时间:2015-04-10 08:04:12

标签: fitnesse fitnesse-slim

我想通过fitnesse远程使用我的瘦服务器,但它不起作用,因为fitnesse总是希望在本地启动slim服务器。 问题: 在 hostA 上有一个独立的fitnesse服务器(从命令提示符开始,带有“ java -jar fitnesse-standalone.jar -p 8080 ”命令),带有一个非常简单的textfixture:< / p>

!define TEST_SYSTEM {slim}
!define slim.host {hostB}
!define slim.port {8090}
!define slim.pool.size {2}

!|script|Count|
|count|
|count|
|check|counter|12|
|count|
|count|
|check|counter|4|
|count|
|count|
|check|counter|6|

hostB 上,我有一个瘦服务器,可以侦听端口 8090 。 如果我启动夹具,我会收到以下错误消息:

“无法启动测试系统&#39; slim&#39;:java.io.IOException:无法运行程序&#34;&#34; c:\ Program Files(x86)\ Java \ jre7 \ bin \ java&#34;&#34;:CreateProcess error = 2,系统找不到指定的文件“

似乎fitnesse想要在本地启动瘦服务器,因为如果我定义测试运行器:

!define TEST_RUNNER {<path>/to/my/slimserver/mycslim.exe}
!define COMMAND_PATTERN {%m}

它有效,但这不是我需要的行为。我想如果我定义 slim.host slim.port fitnesse将自动连接到 hostB 而无需在本地启动slim服务器。

可以将fitnesse服务器配置为连接到远程slim服务器而无需在本地启动它吗? 谢谢你的帮助!

1 个答案:

答案 0 :(得分:0)

我已经编写了一个自定义TestSystem来实现这一目标。关键是客户端构建器。

function makepdf() {
    var pdfContent, a = [], b = [], kontent = [],
        list = $("#tabs ul>li a"),
        imgSources = ['images/weledu.jpg'],
        imgData = [];

    $.getJSON(get_url+'types.php?id='+$('#type').val(), function (newsrc) {
        imgSources.push('images/lamps/'+newsrc.data['0'].image);

        $.each(imgSources, function(index, src) {
            imgData.push(toDataUrl(src));
        });

        // I've always passed `$` as the 1st parameter here, 
        // not sure if it matters
        $.when.apply($, imgData).done(function(img1, img2) {
            // pdf creation
            // Use `img1`, `img2`, etc. here
            // Or loop over `arguments` to get the `dataURL`s
        });     
    });
}

在测试系统工厂中使用此客户端构建器:

public class CustomClientBuilder extends SlimClientBuilder {
   public CustomClientBuilder(Descriptor descriptor) {
      super(descriptor);
   }

   @Override
   public SlimCommandRunningClient build() throws IOException {
       Object commandRunner = new MockCommandRunner(this.getExecutionLogListener());
           return new SlimCommandRunningClient((CommandRunner)commandRunner, this.determineSlimHost(), this.getSlimPort(),
            this.determineTimeout(), this.getSlimVersion(), this.determineSSL(),
            this.determineHostSSLParameterClass());
   }
}