MS 测试断言检查

MS Test assertion checking

我用MS Test写了一个测试方法。我写了两个断言用于测试目的。我故意让测试用例失败了,但我不知道它的哪一部分失败了。

public void CalculatorConstructorTest()
        {
            Calculator concreteObject = new Calculator();

            Assert.IsTrue(concreteObject == null, "Construction failed");
            Assert.IsTrue(concreteObject.Total == 0, "Value should be initially 0");
        }

与第一个断言一样,它会失败。此外,我已经使 Total 大于 0。因此第二个也会失败。但是说其中一个是有效的。那么我如何确定哪个断言,我的测试用例失败了?

提前致谢。

尝试调试测试以查看失败的部分。

有很多方法可以这样做:

调试

尝试调试测试而不是 运行 它。这将导致在失败的断言时引发异常。

检查断言消息

您已经为您的断言提供了一些消息,在选择失败的测试后,这些消息将在测试浏览器详细信息部分中可见。这使得确定哪个测试用例失败变得更加容易(见下面的屏幕截图)。

每个测试用例一个断言

正如评论中所指出的,尽可能在每个测试用例中只使用一个断言。这样一来,哪个断言失败就很明显了,因为测试用例中只有一个断言。

使用拟合断言

尽量有更贴切的断言。在你的情况下,你可以尝试

    Assert.IsNull(concreteObject); 
    Assert.AreEqual(0, concreteObject.Total); 

它还会通过提供更精确的自动消息来告诉您两个断言中的哪一个失败了,如以下屏幕截图所示:

但是,屏幕截图很好地指出,即使我们在测试用例中有 2 个断言,但只有一个被标记为失败。第二个也会失败,但由于测试在第一个失败的断言处停止,所以在第一个断言成功之前我们不会看到它。这就是为什么我总是 每个测试用例一个断言 .