如何使用 NUnit3 以编程方式 运行 TestFixture
How to run TestFixture programatically with NUnit3
我一直在尝试以编程方式找出 good/best 方法来 运行 TestFixture,但似乎找不到使用 NUnit3 的方法。我遵循了 但它似乎对我不起作用并且它似乎是 运行 我可能没有的特定测试或测试列表,我所拥有的只是 TestFixture 的名称class。
我还阅读了几篇很旧的帖子,并提到使用像 TestRunner 和 TestPackage 等东西,我收集到的东西在 NUnit3 中不再可用。我可以 run/execute 我的测试 class 使用命令行和 nunit3-console,这是我应该在这里使用的方法来从我的程序调用可执行文件吗?
引用 NUnitLite 并创建主程序绝对是直接 运行ning 测试的一个选项。您必须使用相同版本的 nunit 框架和 nUnitlite 程序集才能工作。
NUnitLite 的 AutoRun 测试的调用顺序 运行ner 因版本而异。您可以使用智能感知来检查它。对于 3.9,使用这样的代码...
new AutoRun().Execute(args);
备注:
- 如果测试在同一个程序集中,则程序集不需要作为构造函数的参数。
- 如果从命令行 运行ning,
args
是传递给测试可执行文件的相同参数数组。
- 如果以编程方式 运行ning,您需要的任何参数都可以作为字符串数组的元素。不要指定文件名。例如,将
new string[] { "--test:Name.Of.MyFixture" }
传递给 运行 夹具。
我假设解决此问题的理想方法是使用 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);
}
希望这对某人有所帮助,我仍然愿意接受以更有效的方式执行此操作的建议
我一直在尝试以编程方式找出 good/best 方法来 运行 TestFixture,但似乎找不到使用 NUnit3 的方法。我遵循了
我还阅读了几篇很旧的帖子,并提到使用像 TestRunner 和 TestPackage 等东西,我收集到的东西在 NUnit3 中不再可用。我可以 run/execute 我的测试 class 使用命令行和 nunit3-console,这是我应该在这里使用的方法来从我的程序调用可执行文件吗?
引用 NUnitLite 并创建主程序绝对是直接 运行ning 测试的一个选项。您必须使用相同版本的 nunit 框架和 nUnitlite 程序集才能工作。
NUnitLite 的 AutoRun 测试的调用顺序 运行ner 因版本而异。您可以使用智能感知来检查它。对于 3.9,使用这样的代码...
new AutoRun().Execute(args);
备注:
- 如果测试在同一个程序集中,则程序集不需要作为构造函数的参数。
- 如果从命令行 运行ning,
args
是传递给测试可执行文件的相同参数数组。 - 如果以编程方式 运行ning,您需要的任何参数都可以作为字符串数组的元素。不要指定文件名。例如,将
new string[] { "--test:Name.Of.MyFixture" }
传递给 运行 夹具。
我假设解决此问题的理想方法是使用 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);
}
希望这对某人有所帮助,我仍然愿意接受以更有效的方式执行此操作的建议