我寫一些單元測試,並希望利用順序標籤的,我已經找到了語法delclaring這樣的測試。NUnit的順序/組合問題
[Test, Sequential]
public void TestCalculations(
[Values(10000, 15000, 20000, 25000, 50000)] int salary)
{
}
當進行諸如連續/組合多輸入測試時,如何處理斷言?
最良好的祝願
我寫一些單元測試,並希望利用順序標籤的,我已經找到了語法delclaring這樣的測試。NUnit的順序/組合問題
[Test, Sequential]
public void TestCalculations(
[Values(10000, 15000, 20000, 25000, 50000)] int salary)
{
}
當進行諸如連續/組合多輸入測試時,如何處理斷言?
最良好的祝願
我還沒有使用這些屬性我自己,但是我希望準確地編寫實際的測試方法體,如果你是一個單一的值寫它。基本上,一次只能顯示一個值,所以只需編寫代碼來測試該值。
鑑於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);
}
在某些情況下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; });
}
謝謝,最終可能會使用[TestCase的]在某些時候也一樣,我只是困惑,因爲NUnit的文檔沒有告訴你如何對某些屬性的認定工作。 – Yends
好吧,添加一個預期的輸出數組將解決m y問題允許我以正常的方式斷言,謝謝你的例子。 – Yends