在NUnit中动态创建测试

时间:2009-05-15 03:07:41

标签: .net unit-testing nunit

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

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

这甚至可能吗?

4 个答案:

答案 0 :(得分:55)

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

有一个测试用例,并使用TestCaseSource属性标记它,如此

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

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

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

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

答案 1 :(得分:4)

尝试data driven test cases NUnit扩展程序。

答案 2 :(得分:1)

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

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

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

答案 3 :(得分:0)

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