我有一个包含测试用例的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实例.
那么如何在不实际运行所有测试的情况下获取测试列表呢?
您可以使用反射来加载程序集并查找所有测试属性.这将为您提供所有测试方法的方法.剩下的由你决定.
这是msdn关于使用反射来获取类型属性的示例. http://msdn.microsoft.com/en-us/library/z919e8tw.aspx