1

我正在尝试为具有两个可能的正确结果的测试用例编写 UnitTest。返回哪个结果取决于实际的实现,但与需求无关;要么是可以接受的。

两个断言不起作用 - 一个总是会失败。

目前我将这两个结果添加到一个列表中,并断言计算结果在该列表中:

Assert.IsTrue(list.Contains(result));

这行得通,但如果测试失败,它不会给出预期/实际输出(这通常很有帮助)。

有没有更优雅的方法来断言两个可能的期​​望值之一?

(我目前正在使用 MSTest,但我愿意听取其他框架可以提供什么,或者是否有一般建议)

4

3 回答 3

2

NUnit和MSTest中的Assert.IsTrue都有重载来设置断言失败时显示的消息。对于您的情况,您可以像这样编辑断言

Assert.IsTrue(list.Contains(result), 
    "The list did not contain the value " + result);

此消息可以像您希望的那样明确

Assert.IsTrue(list.Contains(result), 
    "The list was expected to contain the value " + result
    + Environment.NewLine + "but had the values " + 
    methodToPrintContentsOfList(list));

这应该有助于解决您遇到的模糊断言消息问题。

于 2012-08-03T17:49:02.300 回答
0

使用 fest 断言和:

assertThat(calculatedResult).isIn(1, 4, 15, 37);
于 2012-08-03T17:07:01.553 回答
0
assertIn(a, b)

测试 a in b 是否在 3.1 中新增

https://docs.python.org/3/library/unittest.html

于 2018-03-01T17:12:47.293 回答