C# 指定要运行的NUnit测试
我有一个NUnit项目,它创建了一个控制台应用程序来运行测试。入口点如下所示:C# 指定要运行的NUnit测试,c#,nunit,C#,Nunit,我有一个NUnit项目,它创建了一个控制台应用程序来运行测试。入口点如下所示: class Program { [STAThread] static void Main(string[] args) { string[] my_args = { Assembly.GetExecutingAssembly().Location }; int returnCode = NUnit.ConsoleRunner.Runner.Main(my_ar
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
选项实现,根据。NUnit附带了一个应用程序,应用程序可以启动您想要的测试。它非常有用,您不必编写代码来运行测试。正如@Toto所说,使用,您可以选择
您可以使用
[Category(“RunOnlyThis”)]
属性标记测试,然后告诉NUnit仅运行与此特定类别匹配的测试:
/include:RunOnlyThis
是需要添加到控制台运行程序参数的属性。更多信息。最新版本(NUnit 3)允许调试测试并指定要执行的测试
调试
--debug
选项启动调试器以调试测试,例如:
nunit3-console.exe "C:\path\to\the\tests.dll" --debug
nunit3-console.exe "C:\path\to\the\tests.dll" --debug --test="EmailNotificationTest.MailerDeSecondTest"
nunit3-console.exe "C:\path\to\the\tests.dll" --debug --testlist="testnames.txt"
过滤测试
现在您有许多不同的方法来选择要运行的测试。第一个选项是--test=NAMES
。将此选项与--debug
相结合,您可以轻松地只调试一个测试,例如:
nunit3-console.exe "C:\path\to\the\tests.dll" --debug
nunit3-console.exe "C:\path\to\the\tests.dll" --debug --test="EmailNotificationTest.MailerDeSecondTest"
nunit3-console.exe "C:\path\to\the\tests.dll" --debug --testlist="testnames.txt"
如果类具有名称空间,请不要忘记它
使用--testlist=PATH
选项,您可以运行文件中指定的所有测试,例如:
nunit3-console.exe "C:\path\to\the\tests.dll" --debug
nunit3-console.exe "C:\path\to\the\tests.dll" --debug --test="EmailNotificationTest.MailerDeSecondTest"
nunit3-console.exe "C:\path\to\the\tests.dll" --debug --testlist="testnames.txt"
还有
--where=EXPRESSION
选项指示将运行哪些测试。此选项旨在扩展或替换早期的--test
、--include
和--exclude
选项。如果您想了解有关此选项的更多信息,请查看 您可以使用NUnit控制台的/run开关指定要运行的测试
像这样:
/run:namespace.classname.functionName
例如
我真的希望自动将其附加到调试器,而应用程序不允许我这样做(或者至少不容易)。我有一些测试失败了,我正试图找出原因。是的,这是我知道这是可能的,但这不是我想要做的。在这种情况下,我最新的代码更改破坏了一些单元测试,我正试图找到根本原因。如果我从visual studio以控制台应用程序的形式运行NUnit项目,我可以在其中设置断点并跟踪代码,这就是我正在尝试做的。您可以将visual studio附加到NUnit,您的断点将到达。我经常这样做。在visual studio中还提供了右键单击功能,可以使用visual studio调试器启动单元测试(非常有用)。我没有使用ConsoleRunner,但它可能支持
[Explicit]
和[Category]
属性。对于那些寻找nunit3 console.exe
的人来说,这在GUI中是不必要的,不过。。。我希望能够在不更改代码的情况下实现特定性,这样我就可以像在GUI中一样对特定测试进行本地化。这不可能吗?@JeremyHolovacs:NUnit doc对此保持沉默,我想console runner不允许这样做。考虑到这一点,我将使用附加调试器-这非常简单,您可以在SO()上找到如何执行此操作。我最终使用了/fixture:EmailNotificationTest
,并将我的测试放在它自己的类中。每次我调整某些东西时附加调试器都很烦人。。。但答案似乎是“你做不到”。可悲的是,官方文件没有具体说明什么是名称。看起来它是完全限定的类名?对于--testlist,如何指定在DLL中找到的testlist?我一直找不到文件错误。我们将这些测试文件存储在哪里?@gideon-使用C#中的nunit3,对我有效的模式是:--test=“namespace.class name.method name”。此外,--debug开关对此也不是必需的