0

我正在使用 MSTest 并且在 [TestMethod] 中我有一个对象,其代码引发异常并且我捕获了它;在某些情况下,我会重新抛出它,有时我不会,但测试总是失败,表明异常被抛出,即使我没有重新抛出它。如何有条件地忽略异常?因为是有条件的,无论我是否重新抛出异常,我都无法使用[ExpectedException]。

4

1 回答 1

0

您应该在确定性情况下测试您的方法,即使用一组始终返回相同响应的参数。如果您的方法有时会抛出异常,有时不会,您应该对它抛出的情况进行一次测试,并在没有抛出的情况下进行另一次测试。

如果您无法控制引发异常的条件,则表明您需要重构代码以便提取条件,并能够以确定的方式测试方法。

例如:

[TestMethod]
public void SomeMethodDoesntFail()
{
    var obj = new objectUnderTest();
    var shouldThrow = false;
    var result = obj.SomeMethod(shouldThrow);
    Assert.IsEqual(*expected result*, result);
}

[TestMethod, ExpectedException]
public void SomeMethodFails()
{
    var obj = new objectUnderTest();
    var shouldThrow = true;
    var result = obj.SomeMethod(shouldThrow);
}
于 2012-03-16T19:18:16.543 回答