2014-07-15 36 views
3

我將一個webtest循環100次(觸發請求並驗證響應100次)到NUnit。看起來[Repeat]屬性只適用於[Test],而不是[TestCase]或任何其他裝飾/屬性。什麼是最乾淨的方式來做到這一點?我想用這些參數激發一個測試用例100次,並且我想這樣做而不添加loopCount參數給我的測試用例,並嵌套我的行爲並在for循環中聲明部分。在NUnit中重複[TestCase] 100次

下面的代碼只運行一次。

[TestCase("arg1", "arg2"), Repeat(100)] 
public void testing(string arg1, string arg2) 
{ 
    //Arrange 

    //Act 
    var response = RequestSender.SendGetRequest(); 

    //Assert 
    AssertStuff(arg1, arg2); 
} 

回答

4

從在線NUnit documentation for Repeat,這似乎是這種行爲是故意的。

注:

它是目前無法使用RepeatAttribute上的TestFixture或任何其他類型的測試套件。只有單個測試可能會重複。 由於參數化測試方法表示套件,因此在出現此類方法時,RepeatAttribute將被忽略。

假設TestCase顯然被認爲是參數化測試。循環看起來不可避免,沒有一些額外的定製?

你可以做什麼,而不是在使用使用測試用例源和飼料它可枚舉的100個多次項目:

private static readonly IEnumerable<Tuple<string, string>> _oneHundredCases = 
    Enumerable.Range(0, 100) 
    .Select(_ => Tuple.Create("arg1", "arg2")); 

[TestCaseSource(nameof(_oneHundredCases))] 
public void testing(Tuple<string, string> theArgs) 
{ 
    ... 
    AssertStuff(theArgs.Item1, theArgs.Item2); 
} 

但同樣的價格,你不妨改變參數的位?例如

_oneHundredCases = 
    Enumerable.Range(0, 100) 
    .Select(n => Tuple.Create(n.ToString(), $"arg{n}"));