指定要运行的NUnit测试

Jer*_*acs 15 c# nunit

我有一个NUnit项目,用于创建用于运行测试的控制台应用程序.入口点如下所示:

class Program
{
    [STAThread]
    static void Main(string[] args)
    {
        string[] my_args = { Assembly.GetExecutingAssembly().Location };

        int returnCode = NUnit.ConsoleRunner.Runner.Main(my_args);

        if (returnCode != 0)
            Console.Beep();

    }
}
Run Code Online (Sandbox Code Playgroud)

如果我只想运行这个测试,我可以作为参数传递什么:

[TestFixture]
public class EmailNotificationTest
{
    [Test]
    public void MailerDefaultTest()
    {
        Assert.IsTrue(false);
    }
}
Run Code Online (Sandbox Code Playgroud)

显然这是支持的,同样明显我不知道如何做到这一点.

UPDATE

看起来像v3 +,根据文档,这可以通过--test选项实现.

Ser*_*hyk 16

最新版本(NUnit 3)允许调试测试并指定执行测试.

调试

--debug选项启动调试器以调试测试,例如:

nunit3-console.exe "C:\path\to\the\tests.dll" --debug
Run Code Online (Sandbox Code Playgroud)

过滤测试

现在,您有多种不同的方法可以选择要运行的测试.第一个选择是--test=NAMES.结合此选项,--debug您只需轻松调试一个测试,例如:

nunit3-console.exe "C:\path\to\the\tests.dll" --debug --test="EmailNotificationTest.MailerDeSecondTest" 
Run Code Online (Sandbox Code Playgroud)

如果类具有它,请不要忘记命名空间.

使用--testlist=PATH选项可以运行文件中指定的所有测试,例如:

nunit3-console.exe "C:\path\to\the\tests.dll" --debug --testlist="testnames.txt" 
Run Code Online (Sandbox Code Playgroud)

还有一个--where=EXPRESSION选项指示将运行哪些测试.该选项用于扩展或替换较早--test,--include--exclude选项.如果您想了解有关此选项的更多信息,请查看官方文档.


k.m*_*k.m 12

您可以使用[Category("RunOnlyThis")]属性标记测试,然后告诉NUnit仅运行与此特定类别匹配的测试:

 /include:RunOnlyThis
Run Code Online (Sandbox Code Playgroud)

是您需要添加到控制台运行程序参数的属性.更多这里.


dig*_*guy 5

您可以使用NUnit 控制台的/run开关来指定要运行的测试。

像这样:

/run:namespace.classname.functionName
Run Code Online (Sandbox Code Playgroud)

例如

nunit-console.exe "C:\UnitTests.dll" /run:UnitTests.EmailNotificationTest.MailerDefaultTest
Run Code Online (Sandbox Code Playgroud)