我正在尝试为具有两个可能的正确结果的测试用例编写UnitTest。返回哪个结果取决于实际实现,但与要求无关;要么是可以接受的。
两个断言不起作用 - 一个总是失败。
目前,我将两个结果添加到列表中,并断言计算结果在该列表中:
Assert.IsTrue(list.Contains(result));
这样可行,但是如果测试失败,它不会给出预期/实际输出(这通常非常有用)。
是否有一种更优雅的方式来断言两种可能的预期值之一?
(我目前正在使用MSTest,但我很乐意听到其他框架可以提供的内容,或者是否有一般建议)
答案 0 :(得分: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));
这应该有助于解决您所遇到的模糊断言消息问题。
答案 1 :(得分:0)
使用fest assert和:
assertThat(calculatedResult).isIn(1, 4, 15, 37);
答案 2 :(得分:0)