我是WCF的新手。我已经创建了一个基本服务,工程师使用调试器和WCFTestClient对其进行了测试。我从来没有编写自己的WCF客户端。现在我需要为服务构建单元测试。
我的课程:
IXService
CXService
CServiceLauncher
(是的,我知道C前缀不符合现行标准,但我的客户标准要求它。)
我的服务功能可以直接针对XService
进行测试,但我也需要测试CServiceLauncher
。我想做的就是连接到URI并发现是否有服务在那里运行以及它提供了哪些方法。
我读过的其他问题:
测试大纲:
public void StartUiTest()
{
Uri baseAddress = new Uri("http://localhost:8080/MyService");
string soapAddress = "soap";
IUserInterface target = new CServiceLauncher(baseAddress, soapAddress);
try
{
Assert.AreEqual(true, target.StartUi());
/// @todo Assert.IsTrue(serviceIsRunning);
/// @todo Assert.IsTrue(service.ExposedMethods.Count() > 4);
Assert.Inconclusive("This tells us nothing about the service");
}
finally
{
target.StopUi();
}
}
答案 0 :(得分:1)
我只需要构建一个简单的客户端。
参考: http://webbeyond.blogspot.com/2012/11/wcf-simple-wcf-client-example.html
添加到测试文件:
using System.ServiceModel;
using MyTests.ServiceReferenceNamespace;
try里面的代码现在是:
Assert.AreEqual(true, target.StartUi());
XServiceClient client = new XServiceClient();
client.GetSessionID();
Assert.AreEqual(CommunicationState.Opened, client.State, "Wrong communication state after first call");
答案 1 :(得分:0)
这不是一个真正的答案,所以请放轻松。
我一直在尝试做类似的事情以及我所学到的集成测试很难。这很困难,因为您需要执行许多隐藏任务,例如:
对我来说,这是一个巨大的头痛,收获甚微。不要误解我的意思,集成测试是一件好事,它只需要很多时间来开发和支持。
我学到了什么?这对WCF服务的集成测试没有任何困扰。相反,我写了很多单元测试来测试合同,状态和行为。通过覆盖这些,我可以确保软件质量。我在部署期间对抗WCF的集成。这通常是配置环境或VM的单一战斗,然后下次部署以(半)自动方式顺利进行。
大多数人也会使用Chef等自动部署,这些工具可以完全配置环境并部署WCF服务。