【问题标题】:specify NUnit test to run指定要运行的 NUnit 测试
【发布时间】:2011-12-21 05:11:03
【问题描述】:

我有一个 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();

    }
}

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

[TestFixture]
public class EmailNotificationTest
{
    [Test]
    public void MailerDefaultTest()
    {
        Assert.IsTrue(false);
    }
}

很明显这是支持的,同样很明显我不知道该怎么做。

更新

看起来像 v3+,这可以通过 --test 选项实现,每个 the documentation。

【问题讨论】:

标签: c# nunit


【解决方案1】:

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

调试

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

nunit3-console.exe "C:\path\to\the\tests.dll" --debug

过滤测试

现在您有多种不同的方式来选择要运行的测试。第一个选项是--test=NAMES。将此选项与--debug 结合使用,您可以轻松地只调试一个测试,例如:

nunit3-console.exe "C:\path\to\the\tests.dll" --debug --test="EmailNotificationTest.MailerDeSecondTest" 

如果类有命名空间,不要忘记命名空间。

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

nunit3-console.exe "C:\path\to\the\tests.dll" --debug --testlist="testnames.txt" 

还有--where=EXPRESSION 选项指示将运行哪些测试。此选项旨在扩展或替换早期的--test、--include 和--exclude 选项。如果您想了解有关此选项的更多信息,请查看official documentation。

【讨论】:

  • 遗憾的是,官方文档没有具体说明 NAMES 的真正含义。看起来它是完全限定的类名?
  • 对于--testlist,如何指定在DLL中找到的testlist?我一直无法找到文件错误。我们在哪里存储这些测试文件?
  • @gideon - 在 C# 中使用 nunit3,适用于我的模式是:--test="namespace.class-name.method-name"。此外,不需要 --debug 开关
【解决方案2】:

你可以用[Category("RunOnlyThis")]属性标记你的测试,然后告诉NUnit只运行匹配这个特定类别的测试:

 /include:RunOnlyThis

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

【讨论】:

  • 这在 GUI 中不是必需的,但是...我希望能够在不更改代码的情况下做到具体,这样我就可以像在 GUI 中那样本地化特定的测试。这不可能吗?
  • @JeremyHolovacs:NUnit 文档对此保持沉默,我认为控制台运行程序不允许这样做。考虑到这一点,我会附上调试器 - 这很容易,你可以在 SO (for example here) 上找到如何做到这一点。
  • 我最终使用了/fixture:EmailNotificationTest 并将我的测试放在它自己的类中。每次我调整某些东西时都附加调试器很烦人......但答案似乎是“你做不到”。跛脚。
【解决方案3】:

正如@Toto所说,使用NUnit Gui,你可以选择。

【讨论】:

  • 是的,我知道这是可能的,但这不是我想要做的。在这种情况下,我最新的代码更改破坏了一些单元测试,我正试图找到根本原因。如果我将 NUnit 项目作为 Visual Studio 中的控制台应用程序运行,我可以在其中设置断点并跟踪代码,这就是我想要做的。
  • 您可以将visual studio附加到nunit,您的breakpioints将会到达。我经常这样做。还有testdriven.net,它在 Visual Studio 中提供右键单击功能,以使用 Visual Studio 调试器启动单元测试(非常有用)。
【解决方案4】:

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

像这样:

/run:namespace.classname.functionName

例如

nunit-console.exe "C:\UnitTests.dll" /run:UnitTests.EmailNotificationTest.MailerDefaultTest

【讨论】:

    【解决方案5】:

    NUnit 自带一个应用程序,该应用程序可以启动您想要的测试。真的好用,不用写代码就可以运行测试。

    【讨论】:

    • 我真的很想将它自动附加到调试器,应用程序不允许我这样做(或者至少,不容易)。我有一些测试失败了,我正在尝试找出原因。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-10-02
    • 1970-01-01
    • 1970-01-01
    • 2019-03-04
    • 2018-08-30
    相关资源
    最近更新 更多