MS测试断言检查

时间:2016-12-01 06:26:33

标签: c# unit-testing tdd mstest

我已经使用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");
        }

与第一个断言一样,它将失败。此外,我的总数大于0.所以第二个也将失败。但是说其中一个是有效的。那么如何确定哪个断言,我的测试用例失败了?

提前致谢。

2 个答案:

答案 0 :(得分:6)

有很多方法可以做到:

调试

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

检查断言消息

您已经为您的断言提供了一些消息,在选择失败的测试后,这些消息将在test-explorers详细信息部分中显示。这样可以更容易地确定哪个测试用例失败(参见下面的屏幕截图)。

enter image description here

每个测试用例一次断言

正如评论中所指出的那样,尝试在每个测试用例中只有一个断言。这种方式显而易见的断言只是因为测试用例中只有一个断言。

使用拟合断言

尝试更合适的断言。在您的情况下,您可以尝试

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

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

enter image description here

然而,屏幕截图显示,即使我们在测试用例中有2个断言,但只有一个被标记为失败。第二个也会失败,但由于测试在第一个失败的断言时停止,我们在第一个断言成功之前不会看到。这就是为什么我总是会在每个测试用例中使用一个断言。

答案 1 :(得分:0)

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