指定NUnit测试运行
我有一个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();
}
}
我能传递作为参数,如果我想只运行这个测试:
[TestFixture]
public class EmailNotificationTest
{
[Test]
public void MailerDefaultTest()
{
Assert.IsTrue(false);
}
}
这显然是支持的,同样清楚我有不知道该怎么做。
UPDATE
它看起来像V3 +,这是可能的--test
选项,每the documentation。
您可以标记与[Category("RunOnlyThis")]
属性测试,然后告诉NUnit的运行测试只有这个特定类别匹配:
/include:RunOnlyThis
是你需要添加到控制台运行参数的属性。更多here。
从GUI不需要这样做,但是......我希望能够具体说明而无需更改代码,以便我可以本地化特定的测试,就像我可以从GUI执行的那样。这不可能吗? –
@JeremyHolovacs:NUnit doc对此保持沉默,我认为控制台运行者不允许它。考虑到这一点,我会去附加调试器 - 这很容易,你可以找到如何做到这一点(因为[例如这里](http://stackoverflow.com/questions/759854/how-do-i经营;-NUnit的功能于调试模式从 - 视觉工作室))。 –
我结束了使用一个'/夹具:EmailNotificationTest'并把我的测试放在它自己的类中。每次调整一些东西都会让人烦恼......但答案似乎是“你不能做到”。瘸。 –
应用程序自带NUnit,应用程序可以启动您想要的测试。这非常有用,您不必编写代码来运行测试。
我真的想自动将它附加到调试器,应用程序不允许我这样做(或者至少不容易)。我有一些失败的测试,我试图看看为什么。 –
正如@Toto所说,使用NUnit Gui,你可以挑选。
是的,这是我知道这是可能的,但这不是我想要做的。在这种情况下,我最近的代码更改打破了一些单元测试,并且我试图找到根本原因。如果我从Visual Studio运行NUnit项目作为控制台应用程序,我可以将断点放入并跟踪代码,这正是我正在尝试执行的操作。 –
你可以将视觉工作室附加到nunit,你的breakpioints将达到。我经常这样做。 还有http://www.testdriven.net/在visual studio中提供rightclick功能来启动Visual Studio调试器的单元测试(非常有用)。 – Toto
最新版本(NUnit 3)允许调试测试并指定要执行的测试。
调试
的--debug
选项启动调试器来调试测试,例如:
nunit3-console.exe "C:\path\to\the\tests.dll" --debug
筛选试验
现在你有许多不同的方式来选择测试( s)运行。第一个选项是--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'的真实含义。看起来这是完全合格的类名? – gideon
为--testlist,你如何指定在DLL中找到的测试列表?我一直无法找到文件错误。我们在哪里存储这些测试文件? – Tree55Topz
您可以使用/运行切换NUnit控制台以指定要运行的测试。
像这样:
/run:namespace.classname.functionName
例如
nunit-console.exe "C:\UnitTests.dll" /run:UnitTests.EmailNotificationTest.MailerDefaultTest
我没有使用ConsoleRunner,但它可能会尊重'[Explicit]'和'[Category]'属性。 – jrummell
对于那些寻找'nunit3-console.exe'请参阅http://stackoverflow.com/questions/37297838/run-individual-test-from-nunit3-console-exe – KCD