代码之家  ›  专栏  ›  技术社区  ›  Ray

在nunit中动态创建测试

  •  34
  • Ray  · 技术社区  · 16 年前

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

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

    这是可能的吗?

    4 回复  |  直到 16 年前
        1
  •  53
  •   Ray    16 年前

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

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

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

    然后编写gettestcase以读取目录中的所有文件名

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

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

        2
  •  4
  •   dbkk    16 年前

    试试 data driven test cases Nunit扩展。

        3
  •  1
  •   Gishu    16 年前

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

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

    Assert.AreEqual(listOfFailedFiles.Length, 0, PrettyPrint(listOfFailedFiles))
    
        4
  •  0
  •   benPearce    16 年前

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