0
我想知道它應該如何測試測試,因爲如果我想測試其中的一個,它迫使我在每個測試中放兩個斷言(它可能會長大)。更新自己的變量的函數
internal class Foo
{
public int A { get; set; }
public int B { get; set; }
public void UpdateVars(int a, int b)
{
A = a;
B = b;
}
}
我應該這樣測試嗎?
private Foo sut;
[TestCase(0, 1)]
[TestCase(-1, 1)]
[TestCase(int.MaxValue, 1)]
public void ShouldUpdateStatsAndCheckA(int a, int b)
{
sut.UpdateVars(a, b);
sut.A.ShouldBe(a);
}
[TestCase(1, 0)]
[TestCase(1, -1)]
[TestCase(1, int.MaxValue)]
public void ShouldUpdateStatsAndCheckB(int a, int b)
{
sut.UpdateVars(a, b);
sut.B.ShouldBe(b);
}
對我來說這似乎很可怕。
嗯,這裏的「正確」的含義是廣泛的,因爲你從來沒有說過他們應該做的(他們是否應該設置變量爲零,如果傳遞的值不是一個有效的數字或將它們設置爲相應數量的,否則的話是的,他們可能工作)。另外,如果方法趨於增長,則必須考慮其他方法和設計模式。方法應該保持簡短,以便易於測試和維護。 –
你最好還是每個測試都有一個斷言。一個(一組)測試來對A進行斷言,另一個對A進行斷言。另一個對B進行斷言。這樣,當A失敗時,你知道它是* A *仍然*得到B的測試執行。 –
Kopranb是正確的 - 正確性意味着你已經實現了一個規範,並且你沒有給我們規範。這兩種方法的規格是什麼?一旦你有了一個規範,那麼你可以編寫測試用例來確定代碼是否正確。 –