2017-08-02 64 views
1

假設你想檢查你的更新方法是否已經正確更新,並假設你更新了你的對象的所有字段,如果所有字段都改變了,你是否斷言?當單元測試更新方法時該聲明什麼?

如果你有很多領域,你會怎麼檢查是否所有的領域都更新?如果答案是你不應該檢查所有的領域,你如何保證所有領域都通過你的方法更新?

我正在使用xUnit.Net,順便說一句。

+0

我通常會在對象內的每個字段上聲明。 Assert.AreEqual(「foo」,something.Name,「更新後Foos名稱錯誤」); – Stuart

回答

2

不,你沒有斷言所有的領域都改變了,你斷言每個領域都有預期的價值。這甚至可能包括預計不會更新的字段:您可能聲稱其值不變。

如果你想採取快捷方式,你可以簡單地計算對象的哈希碼並聲明哈希碼是預期的哈希碼,但是有很多事情可能會出錯,(一個字段可能有錯誤值和哈希碼可能stil匹配,)和修改測試代碼每次一個字段添加到可更新對象將是麻煩的,所以我會建議不要這樣的捷徑。

+0

感謝您的回覆。爲了確認,我在測試的斷言部分會有很多斷言。如果我有20個字段發生了變化,我會有20個斷言?你可否確認? –

+2

嗯,是的。除非你更喜歡用「&&」操作符將它們​​聚集在一起,比如'assert a == 1 && b == 2;',但這會使得當出現錯誤時會發現錯誤有點困難。 –