我一直试图找出以编程方式运行TestFixture的好/最佳方式,但似乎无法找到使用NUnit3的方法。我跟着一个this post但它似乎对我不起作用,它似乎是运行一个我可能没有的特定测试或测试列表,我所拥有的只是TestFixture类的名称。
我还阅读了几篇相当陈旧的帖子,并提到使用的东西,如TestRunner和TestPackage等,我收集的内容在NUnit3中不再可用。我可以使用命令行和nunit3-console运行/执行我的测试类,我应该在这里使用从我的程序调用可执行文件的方法吗?
答案 0 :(得分:0)
引用NUnitLite并创建Main程序绝对是直接运行测试的选项。您必须使用相同版本的nunit框架和nUnitlite程序集才能工作。
NUnitLite的AutoRun测试运行程序的调用顺序因版本而异。您可以使用intellisense进行检查。对于3.9,使用这样的代码......
new AutoRun().Execute(args);
注意:
args
是传递给测试可执行文件的相同参数数组。new string[] { "--test:Name.Of.MyFixture" }
来运行灯具。答案 1 :(得分:0)
我假设解决此问题的理想方法是使用NUnitLite AutoRun,但我无法使其正常工作,因此我选择通过Process调用nunit3-console的选项
string nunit = @"C:\Program Files (x86)\NUnit.org\nunit-console\nunit3-console.exe";
string assembly = @"C:\Path\to\assembly.dll";
string testFixture = " --where class=" + fixtureToRun;
string work = @" --work=C:\Path\to\store\results\";
string args = assembly + testFixture + work;
ProcessStartInfo processStartInfo = new ProcessStartInfo(nunit, args);
processStartInfo.RedirectStandardOutput = true;
processStartInfo.UseShellExecute = false;
using (Process process = new Process())
{
process.StartInfo = processStartInfo;
process.Start();
bool completed = process.WaitForExit(60000);
string result = process.StandardOutput.ReadToEnd();
Console.WriteLine(result);
}
希望这可以帮助某人,我仍然愿意以更有效的方式提出建议