2017-06-05 90 views
1

從nunit3控制檯執行測試有問題。我需要傳遞參數給TestFixture的構造函數,但是我想調用一個特定的Test。 在我的夾具中,我有兩個不同的構造函數和一個沒有參數的方法。現在我把這個CDM:從nunit3控制檯傳遞參數到TestFixture構造函數,而不是TestMethod

  1. nunit3控制檯--params用戶名= U1;密碼= P1 --test namespace.class.Test1 Tests.dll

我認爲,現在的NUnit試圖通過這2個參數,以我的測試,但我想將它傳遞到構造函數,它有

  1. [TestFixtureSource(typeof運算(TestFixtureSource), 「GetParameters」)]

當我使用--where「class ='TestFixtureClassName'」來調用cmd時,「子句參數被傳遞到testfixture的構造函數中,但它會在該fixture中運行所有測試。


在示例

namespace TestNamespace 
{ 
[TestFixtureSource("GetTestFixtureSource")] 
public class TestFixture 
{ 
private int _a; 
private int _b; 
TestFixture() 
{ 
_a = 8; 
_b = 10; 
} 
TestFixture(int a, int b) 
{ 
_a = a; 
_b = b; 
} 
[Test] 
public void Test() 
{ 
//test1 body 
} 
[Test] 
public void Test2() 
{ 
//test2 body 
} 
[Test] 
public void Test3() 
{ 
//test3 body 
} 
} 
} 

現在,在命令提示我把這種行:

  1. nunit3控制檯--params A = 80; B = 100 --test TestNamespace.TestFixture .Test Tests.dll

此行的結果是硒試圖找到具有2個參數的測試方法。但是當u調用NUnit控制檯這樣的:

  1. nunit3控制檯--params A = 80; B = 100 --where類= '的TestFixture' Tests.dll

它發現合適的構造有2個參數並且調用它,但是在這個Fixture裏面運行所有的測試。 現在,我想要實現的是運行單個測試,但將-params傳遞給TestFixture的合適構造函數。

希望我現在更清楚地爲你呈現它。

+0

是否有一個原因,你想用參數而不是app.config文件做到這一點? – mjwills

+0

我從沒有參數的visual studio運行這個測試,但它們也是由TestComplete的cmd運行的,在兩個不同的數據庫,兩個不同的URL(它們是爲每個用戶個性化) – ozyrys1994

回答

0

你的描述可以使用更多的代碼來清楚你在做什麼。

但是,從您所說的話,它聽起來好像運行參數正在通過並在夾具構造函數中使用沒有問題。我誤解了什麼嗎?

哪些測試運行是完全獨立的問題。如果您使用指定類名稱的--where子句,那麼您要讓跑步者運行該班級中的所有測試。但是你的描述說只有一種測試方法。請通過在測試代碼中顯示您正在做的事情,您希望發生的事情以及實際發生的事情,使您的問題更清晰。

正如你所看到的......我開始回答,但意識到我不明白這個問題,所以你可以把它當作一個長期的評論。更新問題後我會回答。

+0

我粘貼了一些代碼,使其更清晰。 – ozyrys1994

相關問題