c# - MS 测试断言检查

标签 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");
        }

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

提前致谢。

最佳答案

有很多方法可以这样做:

调试

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

检查断言消息

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

enter image description here

每个测试用例一个断言

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

使用合适的断言

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

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

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

enter image description here

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

关于c# - MS 测试断言检查,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40903939/

相关文章:

oop - 单元测试不同的类层次结构

c# - 如何从资源中的 DLL 调用函数?

C# - 拉伸(stretch)文本框以适应包含的窗口

c - 对使用 RTOS 的项目进行单元测试

java - 使用 PIT 查找无用的单元测试

.net - TDD和管理

c# - 使用 Linq to Entities 更新数据库

c# - 如何按名称而不是整数访问属性?

java - 如何从模拟上下文获取区域设置

java - Given, when, then约定和异常处理。使用 Mockito 和 JUnit