2

我有一个像 -4,-3,-3,-2,-1,0,1,2,2,3,4 这样的数据源,我有一个函数,这个函数可以捕获重复的数字,例如在这个数据源中我们有 -3,2 重复。重复的数字在程序结束时报告。我找不到好的例子(我花了 3 个小时)。我如何使用 NUnit 实现可以测试相同情况的单元测试并告诉我结果,如果你有一些示例,它将对我非常有用。(非常感谢)。

4

4 回答 4

4

您可以将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 确认多个测试用例。

于 2012-11-16T16:40:55.857 回答
2

首先要做的事情是进行工作测试。像这样的东西:

    [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(正如标签所暗示的那样),则需要从测试开始。

于 2012-11-18T01:05:55.320 回答
1

在这种情况下,我会推荐TestCaseSource 。一些测试可能会使 TestCase 属性中的数据更难读取。

于 2012-11-16T16:50:32.090 回答
0

随着您的测试数据变得复杂,将难以处理。考虑将数据存储在其他源中,例如 excel、json 或数据库。

我个人喜欢将测试数据存储在嵌入式 json 文件中。JsonSectionReader包对此提供了很好的支持。

于 2019-03-30T18:29:07.000 回答