断言两种可能的结果之一

问题描述 投票:1回答:3

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

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

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

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

这是有效的,但是如果测试失败,它不会给出预期/实际输出(这通常非常有用)。

是否有一种更优雅的方式来断言两种可能的预期值之一?

(我目前正在使用MSTest,但我很乐意听到其他框架可以提供的内容,或者是否有一般建议)

unit-testing
3个回答
2
投票

如果断言失败,则NUnitMSTest中的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));

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


0
投票

使用fest断言和:

assertThat(calculatedResult).isIn(1, 4, 15, 37);

0
投票
assertIn(a, b)

测试3.1中的b in new

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

© www.soinside.com 2019 - 2024. All rights reserved.