2011-08-18 68 views
1

我有一个数千个NUnit测试的列表,我想运行(由另一个工具自动生成)。 (这是所有测试的一个子集,并经常更改)运行NUnit是否可能针对特定(长)测试列表

我希望能够通过NUnit-Console.exe运行这些测试。 不幸的是,/ run选项仅仅需要一个直接的文件列表,在我的情况下,它不适合单个命令行。我希望它从文件名中提取列表。

我明白,我可以使用类别,但我想要频繁运行更改的列表,所以我宁愿不必开始更改源代码。

有谁知道是否有一种干净的方式让NUnit运行我指定的测试? (我可以用一个完整的命令行把它分解成一系列更小的调用NUnit控制台,但这不是很优雅)

(如果这是不可能的,也许我应该添加它作为NUnit功能请求。 )

回答

3

已经从查理·普尔(从NUnit的开发团队)的回复,这不是当前可能的,但已经被添加为NUnit的2.6

+1

现已实施,请参阅:http://www.nunit.org/index.php?p=consoleCommandLine&r=2.6.2 语法:nunit-console /runlist:testlist.txt nunit.tests.dll – AndyM

+0

AndyM ,但是你在文本文件中写了什么?我试着写测试用例的名称,但它对我不起作用。我是否应该指定路径? –

+1

@KalaJ nunit-console.exe mytest.dll /runlist:c:\temp\tests.txt tests.txt内容:每个测试一行,例如 mynamespace.subnamespace.class.methodname 如果不确定,请打开Nunit GUI并查看测试的属性。点击全名并复制/贴上你的文本文件。 – AndyM

1

我明白你在说什么,但正如你所说,你可以从命令行运行一个单一的灯具。

nunit-console /fixture:namespace.fixture tests.dll 

如何在同一夹具中生成所有测试?或者将它们都放在同一个组件中?

nunit-console tests.dll 
+1

请注意,从版本2.6.1开始(http://nunit.org/index.php?p=consoleCommandLine&r=2.6.1)'/ fixture'开关已被弃用。请使用从该版本开始的'/ run'或'/ runlist'。 – Oliver

0

正如nunitLink提到的功能要求,我们需要提到场景/测试用例名称。它很简单,但它有一点技巧。直接提到测试用例名称将无法达到目的,并且最终将执行0个测试用例。我们需要写出相同的确切路径。

我不知道它如何适用于其他语言,但使用c#我找到了解决方案。每当我们在Visual Studio中创建一个对应的feature.cs文件get的特性文件时,点击featureFileName.feature.cs,寻找命名空间,并保持它放在一边(第1部分)

namespace MMBank.Test.Features 

滚动一点下来,你会得到的类名。请注意,以及和保持它放在一边(第2部分)

public partial class HistoricalTransactionFeature 

保持向下滚动,你会看到这NUnit的执行理解基本的代码。

[NUnit.Framework.TestAttribute()] 
[NUnit.Framework.DescriptionAttribute("TC_1_A B C D")] 
[NUnit.Framework.CategoryAttribute("MM_Bank")] 

下面的代码,你可以看到您将具有基于没有多的此类方法将最有可能成为TC_1_ABCD(某些参数)的函数/方法名

public virtual void TC_1_ABCD(string username, string password, string visit) 

。您的功能文件中包含的场景。注意要执行的方法(测试用例)并将其放在一边(第3部分)

现在用圆点整理所有部分。最后你会想出这样的事情,

MMBank.Test.Features.HistoricalTransactionFeature.TC_1_ABCD 

这就是它。同样,您可以从多个功能文件创建测试用例名称,并将其叠加在文本文件中。每个测试用例名称应该在不同的行中。对于命令,您可以使用命令提示符浏览上面的nunit链接以执行。