【发布时间】:2010-10-26 09:26:09
【问题描述】:
使用 Nunit,我希望能够编写一个测试夹具,它将读取特定目录中的所有文件名并为每个文件创建一个测试。
我可以很容易地编写一个扫描目录并执行所有测试的测试方法,但是当我运行 NUnit 时,我希望能够单独查看每个测试。
这可能吗?
【问题讨论】:
标签: .net unit-testing nunit
使用 Nunit,我希望能够编写一个测试夹具,它将读取特定目录中的所有文件名并为每个文件创建一个测试。
我可以很容易地编写一个扫描目录并执行所有测试的测试方法,但是当我运行 NUnit 时,我希望能够单独查看每个测试。
这可能吗?
【问题讨论】:
标签: .net unit-testing nunit
试试data driven test cases NUnit 扩展。
【讨论】:
如果您不会随着时间的推移将文件添加到该目录并且有一组文件名作为通用测试的输入传递,请尝试使用RowTest NUnit extension(部分std distrib post v2.4.7) - 您将能够看到每个测试用例 - 在 GUI 中单独输入组合,分组在单个节点下。
如果您要将文件添加到该目录,我会编写一个 NUnit 测试用例,循环遍历在运行时获得的文件列表,并使用每个文件路径调用通用测试方法。使用collecting parameter 收集失败的测试文件名——在你断言的最后。您将无法单独查看每个测试用例,但您将拥有可读的简单测试代码。
Assert.AreEqual(listOfFailedFiles.Length, 0, PrettyPrint(listOfFailedFiles))
【讨论】:
我找到了适合我的目的的方法
有一个测试用例,并像这样用 TestCaseSource 属性标记它
[Test, TestCaseSource("GetTestCases")]
public void TestFile(string filename)
{
//do test
}
然后编写GetTestCases来读取目录下的所有文件名
private static string[] GetTestCases()
{
return GetAllFilesInCurrentDirectory();
}
然后当我启动 NUnit 时,我会得到一个要运行的测试列表(在 TestFile 下列出)。
【讨论】:
我知道这有点晦涩,但我过去曾使用脚本为我生成代码,然后我可以将其作为单独的测试用例执行。
【讨论】: