1

我正在对调用函数的 WCF 应用程序进行单元测试。我需要测试这个功能。我正在为它创建代理,当我尝试对该方法进行单元测试时,会生成一些异常。我尝试了以下代码,但由于异常而无法测试该方法。考虑生成的异常类型不固定。

[TestMethod]
[ExpectedException(typeof(Exception),"A Exception is been Generated.")]
public void TestMethodProxy()
{
IServiceProxy obj=new ServiceProxy();
bool result=obj.DisplayMessage();
Assert.IsTrue(result);
}

请提出一些好的解决方案..提前谢谢....

4

3 回答 3

1

单元测试 WCF 服务不是在测试代理,它只是确认 WCF 内部是否正常工作。您应该通过简单地更新服务并测试其方法来测试您的服务的方法。在这里,您可以测试您的服务可以抛出的预期异常。

于 2012-04-19T06:45:46.573 回答
1

您的代码不会是一个非常有价值的单元测试,纯粹是因为您同时测试多个单元:

  • WCF 客户端
  • 运输到服务
  • 服务消息格式化程序(序列化和反序列化)
  • WCF 服务主机
  • 基于 WCF 的服务。

这使您直接陷入了问题:如果您一次测试多个单元,您如何确定哪个单元失败了?

答案是:你的单元测试应该测试单元。

如果要测试服务的内部功能,只需在 WCF 托管环境之外创建该服务的新实例并对其进行单元测试。如果您想测试您的托管和配置,请创建一个模拟服务,将其托管在 WCF 中并使用可靠的客户端调用该服务。

如果您希望它们为您提供有用的信息,您需要将测试分解为独立的单元。

于 2012-04-19T07:02:58.883 回答
0

我会在测试本身中放置一个 try catch 并以这种方式处理所有不同的情况。这样您就可以进行更精细的控制

然后,如果测试中没有捕获到正确的异常,您可以执行 Assert.Fail

try
{
 //Run code that throws exception
}
catch(SpecificException ex)
{
  //Assert ex for more details if needed
  return;
}
Assert.Fail();
于 2012-04-19T04:40:12.543 回答