有平行的NUnit的CollectionAssert JUnit的?集合在jUnit中聲明?
回答
使用JUnit 4.4你可以用Hamcrest代碼一起使用assertThat()
很好地集成(不用擔心,它的運使用JUnit,不需要額外的.jar
)產生複雜的自我描述斷言包括對集合進行操作的:
import static org.junit.Assert.assertThat;
import static org.junit.matchers.JUnitMatchers.*;
import static org.hamcrest.CoreMatchers.*;
List<String> l = Arrays.asList("foo", "bar");
assertThat(l, hasItems("foo", "bar"));
assertThat(l, not(hasItem((String) null)));
assertThat(l, not(hasItems("bar", "quux")));
// check if two objects are equal with assertThat()
// the following three lines of code check the same thing.
// the first one is the "traditional" approach,
// the second one is the succinct version and the third one the verbose one
assertEquals(l, Arrays.asList("foo", "bar")));
assertThat(l, is(Arrays.asList("foo", "bar")));
assertThat(l, is(equalTo(Arrays.asList("foo", "bar"))));
使用這種方法,你會自動地得到斷言的一個很好的說明,當它失敗。
不是直接的,沒有。我建議使用Hamcrest,它提供了一套豐富的匹配規則,使用JUnit(以及其它測試框架)
這不會編譯由於某種原因(見http://stackoverflow.com/questions/1092981/hamcrests-hasitems): ArrayList
看看FEST流利的斷言。恕我直言,他們比Hamcrest(同樣強大,可擴展等)使用起來更方便,並且由於流暢的界面而具有更好的IDE支持。見https://github.com/alexruiz/fest-assert-2.x/wiki/Using-fest-assertions
約阿希姆·紹爾的解決方案是好的,但如果你已經有了,你要驗證在你的結果預期的數組不起作用。如果您在測試中已經生成或持續期望您想要比較結果,或者您希望在結果中合併多個期望,則可能會出現這種情況。因此,而不是使用匹配器,你可以可以只使用List::containsAll
和assertTrue
例如:
@Test
public void testMerge() {
final List<String> expected1 = ImmutableList.of("a", "b", "c");
final List<String> expected2 = ImmutableList.of("x", "y", "z");
final List<String> result = someMethodToTest();
assertThat(result, hasItems(expected1)); // COMPILE ERROR; DOES NOT WORK
assertThat(result, hasItems(expected2)); // COMPILE ERROR; DOES NOT WORK
assertTrue(result.containsAll(expected1)); // works~ but has less fancy
assertTrue(result.containsAll(expected2)); // works~ but has less fancy
}
- 1. 在Java中聲明集合
- 2. 在JUnit中聲明異常
- 3. LINQ集合中的聲明
- 4. 在Kotlin聲明空集合
- 5. 在Java中聲明集合的類型
- 6. 集合上的集合聲明
- 7. junit和hamcrest聲明
- 8. JUNIT - 聲明異常
- 9. Java集合對象聲明
- 10. 聲明泛型集合
- 11. 關於在JUnit中聲明的查詢
- 12. 攔截JUnit聲明函數
- 13. JUnit - 推遲聲明失敗
- 14. JUnit測試集合
- 15. JUnit Matcher#startsWith的聲明在哪裏?
- 16. 如何在Junit中測試集合(Java)
- 17. 替換當前集合項與聲明
- 18. IEnumerable集合聲明和人口
- 19. 位集合內模板聲明
- 20. 在XAML中聲明的集合掛起Silverlight
- 21. 綁定到在xaml中聲明的集合的屬性
- 22. 聲明存儲在集合中的類型(文字)的變量
- 23. for ...在js中的聲明 - 與dom集合的問題
- 24. 如何在打字稿中聲明一個集合?
- 25. 如何在swagger 2.0中聲明一個集合資源模型?
- 26. wordpress中組合CSS聲明
- 27. Oracle合併到聲明中
- 28. JUnit聲明反對play.mvc.Result內容?
- 29. JUnit聲明數組不等於
- 30. 聲明錯誤 - Junit測試用例
哦,我還沒有意識到hamcrest已經把它變成了junit發行版。去Nat! – skaffman 2009-07-06 12:49:35
如果我想聲明l由條目(「foo」,「bar」)組成,但沒有其他項目存在 - 是否有一些簡單的語法? – ripper234 2009-07-06 12:57:36