无需运行测试即可以编程方式获取nunit库中的测试列表

Jus*_*tin 7 c# nunit

我有一个包含测试用例的nunit类库.我想以编程方式获取库中所有测试的列表,主要是测试名称及其测试ID.这是我到目前为止:

var runner = new NUnit.Core.RemoteTestRunner();
runner.Load(new NUnit.Core.TestPackage(Request.PhysicalApplicationPath + "bin\\SystemTest.dll"));
var tests = new List<NUnit.Core.TestResult>();
foreach (NUnit.Core.TestResult result in runner.TestResult.Results)
{
    tests.Add(result);
}
Run Code Online (Sandbox Code Playgroud)

问题是,在实际运行测试之前,runner.TestResult为null.我显然不想在此时运行测试,我只想获得库中哪些测试的列表.之后,我将为用户提供选择测试并单独运行它的能力,将测试ID传递给RemoteTestRunner实例.

那么如何在不实际运行所有测试的情况下获取测试列表呢?

Set*_*ers 6

您可以使用反射来加载程序集并查找所有测试属性.这将为您提供所有测试方法的方法.剩下的由你决定.

这是msdn关于使用反射来获取类型属性的示例. http://msdn.microsoft.com/en-us/library/z919e8tw.aspx

  • +1,但是有一个转折点:使用 TestCaseAttribute 您可以参数化测试方法,从而将其转换为多个(逻辑)测试。没有什么不能通过反思处理的,但要记住一些事情。 (2认同)