我無法理解除xUnit的Assert.True
提供的基本斷言之外,其他斷言可以提供什麼。在我們的單元測試中使用其他類型的斷言有什麼好處?單元測試的目的不是簡單的真相測試
2
A
回答
2
主要是爲了便於閱讀。 例如:
StringAssert.StartsWith('abc', s);
可能是更具可讀性比:
Assert.True(s.StartsWith('abc'))
一些斷言,雖然做其他有用的東西,如Assert.Fail();
4
在JUnit中我更喜歡使用Hamcrest(assertThat)爲我所有的匹配。我覺得它提供了更多可讀的斷言。有大量可用的匹配器,並且錯誤消息更加豐富。
例如,假設您有一個List<String>
。在assertTrue
它可能是:
assertTrue(myList.size() == 3);
錯誤消息這一點,如果expected true, got false
。與此相比,Hamcrest,
assertThat(myList, IsCollectionWithSize.hasSize(3));
或靜態導入
assertThat(myList, hasSize(3));
assertThat(myList, containsInOrder("first", "second"));
此錯誤消息是expected collection with size 3, got list["blah", "blah" ...]
有額外的匹配像containsString
,IsIterableContainingInOrder
,IsIterableContainingInAnyOrder
,等,等,等。
1
我想它提供了一些可讀性。 Assert.IsNotNull(obj)在眼睛上比Assert.True(obj!= null)更容易。爲了便於閱讀,
0
。測試應該是你的代碼的文檔。
只要有可能,我使用fest assert與普通舊assertXXX沒有任何表達式。如果不可能的話(或者需要對謂詞做很多工作),我使用hamcrest。使用複雜的表達式與assertXXX是我的最後一招
相關問題
- 1. Simple單元測試簡單單元測試
- 2. 簡單的haskell單元測試
- 3. 簡單的android單元測試失敗
- 4. 單元測試相關測試
- 5. Laravel測試與簡單的測試
- 6. C#單元測試簡介
- 7. 單元測試 - 是否有單元測試調用其他單元測試的不良形式
- 8. 單元測試測試
- 9. CakePHP測試 - 單元測試
- 10. 相當簡單的測試知道sudo
- 11. 單元測試中的性能測試
- 12. iOS的單元測試與UI測試
- 13. Ruby測試::的單元測試零SimpleDelegator
- 14. 單元測試這個 - 簡單的方法,但不知道要測試什麼!
- 15. Django 1.6+測試不發現位於測試子目錄中的單元測試
- 16. 通過單元測試和單元的Mockito和測試的Mockito
- 17. python項目的簡單測試工具
- 18. 簡單的PHP isset測試
- 19. Node.js的簡單TCP測試
- 20. 簡單測試中的NoClassDefFoundError
- 21. 簡單的MVC ASP.Net測試
- 22. 什麼是單元測試的非常簡單的解釋?
- 23. Angular2科目單元測試
- 24. 簡單單元測試NodeJS/Express
- 25. WcfOperationLifestyle簡單注射器單元測試
- 26. 簡單方程失敗單元測試
- 27. NHibernate如何使單元測試簡單?
- 28. 「簡單」彈簧單元測試
- 29. 單元測試
- 30. 單元測試