如何在Visual Studio测试项目中测试“错误”

时间:2013-06-25 16:37:11

标签: unit-testing visual-studio-2012

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

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

1 个答案:

答案 0 :(得分: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
}

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

这可以让您了解如何进行单元测试。