0

我正在尝试在 FitNesse 测试中调用 WCF 服务。当我尝试使用以下代码初始化客户端时:

    using (var client = new Status.StatusSoapClient())
    {
        client.Endpoint.Address = new EndpointAddress(url);
        response = client.GetProductionTicketStatus(dealerId, orderId, orderLineId);

    }

我收到一个错误:

System.InvalidOperationException:在 ServiceModel 客户端配置部分中找不到引用合同“Status.StatusSoap”的默认端点元素。

这是有道理的,因为 .NET Framework 不支持 DLL 的配置。

MSDN 库说:“您必须将配置代码移动到托管环境识别的配置文件中”。但我不确定这是否可以为 FitNesse 完成。

所以我尝试自己创建绑定而不尝试从配置中读取它

    var binding = new BasicHttpBinding();
    binding.SendTimeout = new TimeSpan(0, 0, 0, 0, 100000);
    binding.OpenTimeout = new TimeSpan(0, 0, 0, 0, 100000);
    binding.MaxReceivedMessageSize = 10000;
    binding.ReaderQuotas.MaxStringContentLength = 10000;
    binding.ReaderQuotas.MaxDepth = 10000;
    binding.ReaderQuotas.MaxArrayLength = 10000;
    var endpoint = new EndpointAddress(url);
    var myClient = new Status.StatusSoapClient(binding, endpoint);
    response = myClient.GetProductionTicketStatus(dealerId, orderId, orderLineId);

但是当我尝试使用此代码运行测试时,我得到“测试被中断并且结果不完整”。FitNesse 上的错误。

这个答案https://stackoverflow.com/a/646177/2211481建议为测试运行者制作 app.config 的副本。当我将我的 app.config 复制到 Runner.exe.config,将其放入 Runner 文件夹并再次运行初始代码时,我得到“测试被中断,结果不完整”。FitNesse 再次出现错误。

有没有办法解决这个问题?

4

2 回答 2

0

通过定义 COMMAND_PATTERN 使其工作,如下所述:http: //twenty6-jc.blogspot.nl/2010/07/wcf-and-fitnesse-how-to-load-clients.html

!define COMMAND_PATTERN {%m -a c:\projects\someapplication\acceptancetests\acceptancetests.dll.config -r fitSharp.Slim.Service.Runner,c:\tools\nslim\fitsharp.dll %p}

为测试运行者制作 app.config 的副本最终也奏效了。

我收到“测试被中断,结果不完整”。错误是因为我在调试后解决了我的代码中的错误。

于 2014-12-11T13:48:41.680 回答
0

看到这篇文章:FitNesse App.Config

NetRunner使用列表中第一个 dll 的配置文件。

例如,对于该行:

!path C:\Probjects\HelloWorld\bin\Debug\FitNesseHelloWorld1.dll, C:\Probjects\HelloWorld\bin\Debug\FitNesseHelloWorld2.dll

NetRunner 将使用配置文件“C:\Probjects\HelloWorld\bin\Debug\FitNesseHelloWorld1.dll.config”

于 2014-12-23T18:05:31.203 回答