我有一个数据源,如-4,-3,-3,-2,-1,0,1,2,2,3,4,我有一个函数,这个函数可以捕获重复的数字,例如在这个数据源中我们有-3,2重复。重复的数字在程序结束时报告。我找不到好的例子(我花了3个小时)。如何使用NUnit实现单元测试,可以测试相同的情况并告诉我结果,如果你有一些例子,它对我非常有用。(真的很感激)。
您可以将TestCase
属性用于简单数据,就像您所描述的那样。
[Test]
[TestCase(new[] { -4, -3, -3, -2, -1, 0, 1, 2, 2, 3, 4 }, new []{-3,2})]
public void YourTest(int[] given, int[] expected)
{ ... }
注意:ReSharper(至少我的版本)不支持像这样的多个测试用例,因此我必须使用NUnit GUI确认多个测试用例。
首先要做的是 - 进行工作测试。像这样的东西:
[Test]
public void DetectsMinusThreeAndTwo()
{
RepeatingDigitsDetector target = new RepeatingDigitsDetector();
int[] source = new int[] { -4, -3, -3, -2, -1, 0, 1, 2, 2, 3, 4 };
int[] expected = new int[] { -3, -2 };
int[] actual = target.GetRepeats(source);
Assert.AreEqual(expected.Length, actual.Length, "checking lengths");
for (int i = 0; i < expected.Length; i++)
{
Assert.AreEqual(expected[i], actual[i], "checking element {0}", i);
}
}
之后,您可以开始添加像TestCase
或TestCaseSource
属性的好东西。但是如果你正在尝试做TDD(正如tdd标签所暗示的那样),你需要从测试开始。
在这个例子中我会推荐TestCaseSource。一些测试可能会使TestCase属性内的数据更难读取。
由于您的测试数据变得复杂,因此难以处理。考虑将数据存储在另一个源中,例如excel,json或Database。
我个人喜欢将测试数据存储在嵌入式json文件中。包JsonSectionReader为此提供了很好的支持。