【问题标题】:Data Driven Testing With NUnit使用 NUnit 进行数据驱动测试
【发布时间】:2012-05-18 21:28:47
【问题描述】:

需要有关数据驱动测试自动化的建议。

我正在使用 C# ann Nunits 为使用 MVC 开发的 Web 应用程序进行测试自动化。为此,我们正在使用 Selenium Web 驱动程序。

作为数据驱动测试的一部分,输入测试数据最好使用xml文件还是sql server db。

如果我们使用 db,最好有一些 ORM(NHibernate) 用于 db 连接。

谢谢

【问题讨论】:

  • 我不会在单元测试中使用数据库访问,这会导致运行时间过长和性能问题。
  • @O.D:我也有同样的感觉。实际上,这让我更加困惑。

标签: c# automated-tests nunit-2.5


【解决方案1】:

data-driven-test-in-nunit-with-csv

Parameterized Tests in NUnit

如何使用

   [Test, TestCaseSource("GetTestData")]
    public void MyExample_Test(int data1, int data2, int expectedOutput)
    {
        var methodOutput = MethodUnderTest(data2, data1);
        Assert.AreEqual(expectedOutput, methodOutput, string.Format("Method failed for data1: {0}, data2: {1}", data1, data2));
    }


    private IEnumerable<int[]> GetTestData()
    {
         while (data.ReadNext()) // Use your custom logic based on Stream to get new data (basically Implement IEnumerator on data class)
          yield return new[] { data.Current };
    }

其他测试框架
MS Test
XUnit

【讨论】:

    【解决方案2】:

    看看哪个适合你的账单。

    如果您有一个好的 ORM,并且您对它感到满意,请使用它。

    如果您对 XML 更满意,那就去做吧。

    当它成为一个问题时,考虑一下长时间的运行。您不是在使用 Selenium 编写单元测试,而是在编写集成 UI 测试。因此,它们通常在夜间运行,因此长时间运行很少成为问题。

    就个人而言,在这里,我们使用 LINQ2SQL,对于任何数据我都跳到 SQL 服务器数据库,它工作正常 - 只要您的查询不傻,性能影响很小。

    【讨论】:

      【解决方案3】:

      我的建议是将测试数据捆绑到单元测试夹具本身中。每个测试方法的设置都会为测试设置初始状态(数据);并且拆解会清理它(如有必要)。

      试图维护一个外部数据文件并使其与单元测试代码保持一致是自找麻烦。 (YMMV - 这是我的个人经验建议。)

      【讨论】:

        【解决方案4】:
        【解决方案5】:

        考虑将测试数据存储在嵌入式 json 文件中,而不是 excel 或数据库中。

        用json存储会有以下好处。

        1. 测试代码不会因架构而受到阻碍
        2. 没有连接问题
        3. 测试数据将作为您项目的一部分提供

        This 为管理嵌入 json 文件中的测试数据提供了良好的支持

        【讨论】:

          猜你喜欢
          • 2011-05-01
          • 2012-11-05
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2010-11-18
          • 1970-01-01
          • 2023-03-24
          • 1970-01-01
          相关资源
          最近更新 更多