我试图在FitNesse测试中调用WCF服务。 当我尝试使用以下代码初始化客户端时:
using (var client = new Status.StatusSoapClient())
{
client.Endpoint.Address = new EndpointAddress(url);
response = client.GetProductionTicketStatus(dealerId, orderId, orderLineId);
}
我收到错误:
System.InvalidOperationException:找不到默认端点 引用合同的元素' Status.StatusSoap'在里面 ServiceModel客户端配置部分。
这是有道理的,因为.NET Framework不支持DLL的配置。
MSDN Library说:"您必须将配置代码移动到托管环境识别的配置文件中#34;。但我不确定FitNesse是否可以做到这一点。所以我尝试自己创建绑定而不尝试从config
中读取它 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);
但是当我尝试使用此代码运行测试时,我得到了#34;测试被中断,结果不完整。" FitNesse上的错误。
这个答案https://stackoverflow.com/a/646177/2211481建议为testrunner制作app.config的副本。当我将我的app.config复制到Runner.exe.config时,将它放到Runner文件夹并再次运行初始代码我得到"测试被中断,结果不完整。" FitNesse再次出错。
我有办法解决这个问题吗?
答案 0 :(得分:0)
通过定义COMMAND_PATTERN来实现它,如下所述:http://twenty6-jc.blogspot.nl/2010/07/wcf-and-fitnesse-how-to-load-clients.html
!定义COMMAND_PATTERN {%m -a C:\项目\ someapplication \ acceptancetests \ acceptancetests.dll.config -r fitSharp.Slim.Service.Runner,c:\ tools \ nslim \ fitsharp.dll%p}
为testrunner制作app.config的副本也最终有效。
我得到了#34;测试被中断,结果不完整。"由于我的代码中的错误,我在调试后解决了错误。
答案 1 :(得分: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"