.net 在NUnit中动态创建测试

.net 在NUnit中动态创建测试,.net,unit-testing,nunit,.net,Unit Testing,Nunit,使用Nunit,我希望能够编写一个测试装置,读取特定目录中的所有文件名,并为每个文件创建一个测试 我可以很容易地编写一个测试方法来扫描目录并只执行所有测试,但是当我运行NUnit时,我希望能够单独查看每个测试 这是可能的吗?尝试NUnit扩展。如果您不打算随着时间的推移将文件添加到该目录,并且有一组文件名作为通用测试的输入传入,请尝试使用(std distrib post v2.4.7的一部分)-您将能够在分组在单个节点下的GUI中单独查看每个测试用例-输入组合 如果您将要向该目录添加文件,我将

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

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


这是可能的吗?

尝试NUnit扩展。

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

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

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下)。

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

非常简单。该属性也相当灵活,如文档(参考v2.5.2)中所述:NUnit rocks!!它使事情变得更简单。我正在将此功能用于integration testsHow,以使其在ReSharper test runner中工作?它在消息框中显示错误和失败,而不是在测试中显示堆栈session@moudrick-您可能需要针对Resharper提出一个新问题。对7年前答案的评论不会得到回应。值得使用nameof(GetTestCases)使您的测试重构友好