【问题标题】:Dynamically create tests in NUnit在 NUnit 中动态创建测试
【发布时间】:2010-10-26 09:26:09
【问题描述】:

使用 Nunit,我希望能够编写一个测试夹具,它将读取特定目录中的所有文件名并为每个文件创建一个测试。

我可以很容易地编写一个扫描目录并执行所有测试的测试方法,但是当我运行 NUnit 时,我希望能够单独查看每个测试。

这可能吗?

【问题讨论】:

    标签: .net unit-testing nunit


    【解决方案1】:

    试试data driven test cases NUnit 扩展。

    【讨论】:

      【解决方案2】:

      如果您不会随着时间的推移将文件添加到该目录并且有一组文件名作为通用测试的输入传递,请尝试使用RowTest NUnit extension(部分std distrib post v2.4.7) - 您将能够看到每个测试用例 - 在 GUI 中单独输入组合,分组在单个节点下。

      如果您要将文件添加到该目录,我会编写一个 NUnit 测试用例,循环遍历在运行时获得的文件列表,并使用每个文件路径调用通用测试方法。使用collecting parameter 收集失败的测试文件名——在你断言的最后。您将无法单独查看每个测试用例,但您将拥有可读的简单测试代码。

      Assert.AreEqual(listOfFailedFiles.Length, 0, PrettyPrint(listOfFailedFiles))
      

      【讨论】:

        【解决方案3】:

        我找到了适合我的目的的方法

        有一个测试用例,并像这样用 TestCaseSource 属性标记它

        [Test, TestCaseSource("GetTestCases")]
        public void TestFile(string filename)
        {
            //do test
        }
        

        然后编写GetTestCases来读取目录下的所有文件名

        private static string[] GetTestCases()
        {
            return GetAllFilesInCurrentDirectory();
        }
        

        然后当我启动 NUnit 时,我会得到一个要运行的测试列表(在 TestFile 下列出)。

        【讨论】:

        • 漂亮而简单。该属性也相当灵活,如文档(参考 v2.5.2)中所述:nunit.com/index.php?p=testCaseSource&r=2.5.2
        • NUnit 摇滚!!它使事情变得更简单。我正在使用此功能进行集成测试
        • 如何让它在 ReSharper 测试运行器中工作?它在消息框中显示错误和失败,而不是在测试会话中显示堆栈
        • @moudrick - 您可能想针对 Resharper 提出一个新问题。对 7 年前的答案的评论不会得到回应。
        • 值得使用 nameof(GetTestCases) 使您的测试重构友好
        【解决方案4】:

        我知道这有点晦涩,但我过去曾使用脚本为我生成代码,然后我可以将其作为单独的测试用例执行。

        【讨论】:

          猜你喜欢
          • 2018-06-24
          • 2015-07-26
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2021-12-20
          • 1970-01-01
          • 1970-01-01
          • 2010-12-31
          相关资源
          最近更新 更多