我在應用程序中有各種對象,並且每個對象都有無效的方法來測試所有屬性的值是否正確設置(按照業務規則)。現在,爲了測試每個違反是有效的拋出錯誤,我將不得不寫作儘可能多的測試作爲規則被檢查isvalid.Is有一個更簡單的方法來做到這一點?我正在使用MBunit。如何爲具有多個屬性的對象編寫單元測試
2
A
回答
1
我不確定你想變得更簡單。您可能希望創建一個輔助方法來創建一個有效的對象下手,讓每個測試是一樣的東西:
public void FooWithNullNameIsInvalid()
{
Foo foo = CreateValidFoo();
foo.Name = null;
Assert.IsFalse(foo.IsValid);
}
然後每個測試比較小,測試一兩件事,是很容易理解。是的,這種事情可能有點單調,但它的工作原理。
另一種選擇,使測試更短會:
private void AssertInvalidChange(Action<Foo> change)
{
Foo foo = CreateValidFoo();
change(foo);
Assert.IsFalse(foo.IsValid);
}
然後每個測試可以只是形式:
public void FooWithNullNameIsInvalid()
{
AssertInvalidChange(foo => foo.Name = null);
}
現在在這個階段,你可以把所有的以單一方法進行有效性測試,每次無效更改一行。這肯定會更簡單,但它會違反「唯一測試一件事」的口頭禪。就我個人而言,我相當寬鬆 - 我會非常強烈地想要這樣做。缺點是如果你有多個測試失敗,你一次只能看到一個失敗。
+0
的確有意思! – jess 2010-04-06 07:13:49
0
您可能想要考慮在您的SUT中是否需要複製測試工作並不表示代碼複製。
也許您可以將業務規則實施爲Strategy,在這種情況下,您只需測試一次策略實施,然後對每個SUT驗證他們是否使用了正確的策略。
否則,一組Parameterized Tests聽起來像是要走的路。
相關問題
- 1. 有很多屬性的對象的單元測試建議
- 2. 我如何編寫測試併發性的Tornado單元測試
- 3. 如何根據具有多個屬性的對象列表中的單個屬性返回相同的元素?
- 4. 如何編寫getPopularItems()的單元測試?
- 5. 如何測試對象的多個屬性
- 6. 將元素添加到具有多個屬性的對象
- 7. 如何編寫單元測試?
- 8. vue karma,如何編寫單元測試
- 9. 如何編寫加密單元測試?
- 10. 如何緩存具有多個屬性的對象
- 11. 如何在單元測試中測試兩個對象的相等性?
- 12. 具有派生屬性的域類的Grails3單元測試
- 13. 單元測試ios屬性
- 14. 單元測試和屬性
- 15. 應該爲簡單的POCO域對象編寫哪些單元測試?
- 16. javascript測試對象屬性
- 17. AttributeError:'元組'對象沒有屬性'寫'
- 18. 如何寫測試單元
- 19. 單元測試 - 如何快照對象?
- 20. 如何編寫規範來測試對象是否具有特定的值?
- 21. 如何爲未導出的函數編寫單元測試?
- 22. 如何爲返回對象的方法編寫測試用例
- 23. 如何編寫多線程單元測試?
- 24. 如何編寫php單元測試來測試堆棧功能?
- 25. 如何編寫測試:Socket.io應用程序單元測試
- 26. 如何編寫單元測試,測試併發不變
- 27. 如何編寫RSpec測試來單元測試這個有趣的元編程代碼?
- 28. 如何爲具有可擴展屬性的資源編寫DAO?
- 29. 如何訪問具有美元符號的PHP對象屬性?
- 30. 性能測試對戰單元測試
我決定做行測 – jess 2010-04-06 07:12:25