【问题标题】:MSTest [TestMethod] fails even when code to test catches and does not rethrow the exception?即使要测试的代码捕获并且不重新引发异常,MSTest [TestMethod] 也会失败?
【发布时间】:2012-03-16 01:17:57
【问题描述】:

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

【问题讨论】:

    标签: tdd mstest expected-exception


    【解决方案1】:

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

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

    例如:

    [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);
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2022-11-06
      • 2014-11-09
      • 2016-06-23
      • 1970-01-01
      • 2018-12-17
      • 1970-01-01
      • 1970-01-01
      • 2014-09-18
      相关资源
      最近更新 更多