2011-08-18 67 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鏈接以執行。