【问题标题】:NUnit data driven unit test with datasource使用数据源的 NUnit 数据驱动单元测试
【发布时间】:2012-11-05 09:53:18
【问题描述】:

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

【问题讨论】:

    标签: c# unit-testing tdd nunit test-data


    【解决方案1】:

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

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

    【讨论】:

      【解决方案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(正如 标签所暗示的那样),您需要从 a 测试开始。

      【讨论】:

      • 谢谢@Edmund,我希望我们有外部数据源,如 Excel、Access、..,如 MSTest
      【解决方案3】:

      我会在这个实例中推荐TestCaseSource。一些测试可能会使 TestCase 属性中的数据更难读取。

      【讨论】:

        【解决方案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 确认多个测试用例。

        【讨论】:

        • +1 如果您使用 TestCase 标记方法,我认为 Test 是可选的
        • 谢谢,我们可以显示任何重复位置的数组的第一个索引吗?例如 -3-->1 和 2-->7
        • @user1824702:这个问题的范围是什么?
        • @user1824702:我并没有完全遵循这一点,这可能就是您努力为其编写单元测试的原因。单元测试部分和整体最终将是显而易见的。
        猜你喜欢
        • 2011-05-01
        • 2012-05-18
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-11-24
        • 1970-01-01
        相关资源
        最近更新 更多