0

我是在 VS 中使用测试项目的新手,并且正在使用 VS 2012。假设我有一个 WCF 服务,它对数据库执行读取并返回一个带有状态代码(数字)和状态消息(“成功”或“危险威尔罗宾逊”)。

作为单元测试的一部分,我不希望能够测试这些错误代码和消息是否正确返回吗?如果是这样,我将如何测试这些异常情况?

4

1 回答 1

0

您要测试两种类型的错误。作为结果的一部分返回的那些和作为异常发生的那些。您可以测试第一种类型,例如:

[UnitTest]
public void MethodUnderTest_ScenarioBeingTested_ResultOfTest()
{
    // Arrange
    string expectedError = "Danger Will Robinson";
    IMySpecialService service = new FakeSpecialService();

    // Act
    var result = service.CallOperation(thisArgumentCausesError);

    // Assert
    Assert.AreEqual(expectedError, result.ReturnMessage);
}

以上将测试从某个虚构对象返回的错误消息,并将与预期的错误消息“Danger Will Robinson”进行比较;

当您想测试异常时,您可以使用类似的方法,但使用特殊属性装饰您的单元测试类:

[ExpectedException(typeof(System.DivideByZeroException))]
[UnitTest]
public void MethodUnderTest_ScenarioBeingTested_ExpectedResult()
{
    // Arrange
    int i = 0;
    int j = 0;
    IMathService service = new FakeService();

    // Act
    decimal result = service.PerformDivision(i, j);

    // Assert
    // This part is never reached because Assertion is handled by ExpectedException
}

在这种情况下,您知道将引发异常并且不会处理该异常。在这里,我们正在测试一些虚拟服务,它执行一些数学运算,比如除法。

这应该让您了解如何进行单元测试。

于 2013-06-25T17:01:42.683 回答