2011-08-19 63 views
3

我寫一些單元測試,並希望利用順序標籤的,我已經找到了語法delclaring這樣的測試。NUnit的順序/組合問題

[Test, Sequential] 
    public void TestCalculations(
    [Values(10000, 15000, 20000, 25000, 50000)] int salary) 
    { 


    } 

當進行諸如連續/組合多輸入測試時,如何處理斷言?

最良好的祝願

回答

6

我還沒有使用這些屬性我自己,但是我希望準確地編寫實際的測試方法體,如果你是一個單一的值寫它。基本上,一次只能顯示一個值,所以只需編寫代碼來測試該值。

鑑於the documentation,我不認爲Sequential真的對你的例子有意義,因爲你只有一個參數。這是有道理的,當你有多個參數,基本上說,對一個參數的第一個值應該與其他參數的第一個值,然後爲每個等第二值,而不是每一個可能對正在執行配對。你可能會用它來給輸入和期望的輸出,例如:

[Test, Sequential] 
public void TestDivisionBy2(
    [Values(10, 25, 40)] int input, 
    [Values(5, 12, 20)] int expectedOutput) 
{ 
    Assert.AreEqual(expectedOutput, input/2); 
} 
+0

好吧,添加一個預期的輸出數組將解決m y問題允許我以正常的方式斷言,謝謝你的例子。 – Yends

3

在某些情況下TestCase屬性可能是有用的,它提供了內置的功能Result

[TestCase(12,3, Result=4)] 
[TestCase(12,2, Result=6)] 
[TestCase(12,4, Result=3)] 
public int DivideTest(int n, int d) 
{ 
    return(n/d); 
} 

如果你不希望任何具體的結果值,只是想確保測試對不同的輸入值正常工作 - 你也可以這樣做:

[TestCase(120000, -1)] 
[TestCase(Int32.MinValue, Int32.MaxValue)] 
[TestCase(-1, 23333)] 
public void ShouldHandleWrongRangeValues(int n, int d) 
{ 
    Assert.DoesNotThrow(() => { var someIntermediateValue = n * d; }); 
} 
+0

謝謝,最終可能會使用[TestCase的]在某些時候也一樣,我只是困惑,因爲NUnit的文檔沒有告訴你如何對某些屬性的認定工作。 – Yends