有一种常用的方法可以使用NUnit测试具有多个参数的复杂函数吗?我认为测试每种情况都是非常困难或不可能的。
我担心在测试中也不会出现函数中不期望的参数组合。
所以预期的情况不会失败,而是出乎意料的。
由于
答案 0 :(得分:5)
这根本不应该很难测试。如果是,则该方法不是为可测试性而设计的,这是一种代码气味,告诉您需要重构它。
我倾向于在这些案例中编写测试如下(其他人可能有更好的建议):
如果你的方法需要很多参数,可以考虑重构它以获取带有信息的对象,这样你就可以在对象中封装它的规则,并将对象传递给方法。
答案 1 :(得分:2)
对于NUnit中的数据驱动测试,有[TestCase]
attribute。单元测试通常不会测试每种可能的情况。他们只是测试代表性的输入集,它们很好地覆盖了SUT在各种输入上的作用。只需选择一些特色输入,你就可以了。
答案 2 :(得分:1)
不知道这是否是您正在寻找的东西,但有一个自动单元测试生成器由Microsoft研究人员创建,名为PEX。
Pex自动生成具有高代码覆盖率的测试套件。在Visual Studio代码编辑器中,Pex可以找到方法的有趣输入输出值,您可以将其保存为具有高代码覆盖率的小型测试套件。 Microsoft Pex是用于测试.NET Framework应用程序的Visual Studio加载项。
答案 3 :(得分:1)
使用 RowTest 可以在
找到类似的问题看看@“Sam Holder”的回复,我从中复制了代码,几乎没有调整。
[TestFixture]
public class TestExample
{
[RowTest]
[Row( 1)]
[Row( 2)]
[Row( 3)]
[Row( 4)]
public void TestMethodExample(int value)
{
...
...
...
Assert.IsTrue("some condition ..");
}
}
答案 4 :(得分:0)
我同意Mike Hofer的观点,这个问题表明代码有异味。
尽管如此,NUnit has a Combinatorial attribute可能会对您有所帮助,如果您不进行重构/重新设计。