40
A
回答
60
傑夫的解決方案的一個替代方案是使用both
:
assertThat(50L, is(both(greaterThan(12L)).and(lessThan(1658L))));
我認爲這是相當的可讀性。您還可以的情況下,檢查失敗了良好的錯誤消息:
預期:是(值大於< 50L>和值小於< 1658L>) 了:< 50L>
20
我不相信between
是核心hamcrest匹配器的一部分,但你可以做這樣的事情:
assertThat(number, allOf(greaterThan(min),lessThan(max)));
這還是有點難看,所以你可以
assertThat(number, between(min,max))
和between
之間創建一個helper方法,看起來像
allOf(greaterThan(min),lessThan(max))
仍然不是一個夢幻般的解決方案,但它看起來像一個hamcrest匹配器。
如果您找不到可公開提供的產品,那麼編寫您自己的between
匹配器http://code.google.com/p/hamcrest/wiki/Tutorial將會很簡單。
12
如果你處理整數,你應該考慮使用closeTo
方法:
assertThat((double)nclient, is(closeTo(nserver, 1d)));
不幸的是,沒有爲closeTo
整數,但ē非常32位的整數可以用double來表示,所以你可以簡單地將它們轉換爲double,然後繼續。
這不完全等同於between
,但有時可能會有所幫助。
1
另一種選擇是使用Cirneco extension。它有between()
,betweenInclusive()
和更多。這些匹配器也適用於實現Comparable
的其他對象(如Date
)。
按照您的例子,這將是:
assertThat(50L, between(12L, 1658L));
,如果你要包括兩個界限:
assertThat(50L, betweenIncluded(12L, 1658L));
,或者如果你只想被包含在範圍之一:
assertThat(50L, betweenLowerBoundIncluded(12L, 1658L));
assertThat(50L, betweenUpperBoundIncluded(12L, 1658L));
您CA n使用以下依賴於一個兼容JDK7項目:
<dependency>
<groupId>it.ozimov</groupId>
<artifactId>java7-hamcrest-matchers</artifactId>
<version>0.7.0</version>
</dependency>
或以下,如果您使用JDK8
<dependency>
<groupId>it.ozimov</groupId>
<artifactId>java8-hamcrest-matchers</artifactId>
<version>0.7.0</version>
</dependency>
相關問題
- 1. Hamcrest比較集合
- 2. Hamcrest matcher比較來自JSON的double值
- 3. 如何使用hamcrest包含比較2列表?
- 4. 什麼是使用hamcrest比較as3對象的正確方法
- 5. 基於多輸入比較使用hamcrest和lambdaj的對象
- 6. 比較號碼:202.10.200和202.201.30
- 7. Java比較彩票號碼
- 8. Groovy號碼比較問題
- 9. 如何比較2號碼?
- 10. 功能比較號碼不起作用
- 11. 使用emf比較代碼?
- 12. 符號比較
- 13. 比較Android中的電話號碼
- 14. 如何比較電話號碼?
- 15. 電話號碼轉換和比較
- 16. Linux內核次要號碼比較
- 17. 比較JavaScript中的電話號碼
- 18. 排序4號碼和幾個比較
- 19. Xcode比較來自FMDB的號碼
- 20. 如何比較兩個NSNumber號碼?
- 21. 在字母數字號碼上使用比較運算符
- 22. 比較中獎號碼與中獎號碼
- 23. 比較特定號碼的號碼連續
- 24. 比較同型號
- 25. 比較符號C++
- 26. 用於比較4個號碼的簡明代碼
- 27. 比較使用==
- 28. 使用比較
- 29. (Python挑戰賽)比較兩個號碼的符號而不使用< or >
- 30. 比較用戶輸入的號碼和Javascript中隨機生成的號碼
我沒有找到_both_聲明導入。有人可以幫忙嗎? –
@CiganoMorrisonMendez它在org.hamcrest.CoreMatchers –
謝謝。它並沒有出現在我面前,因爲LambdaJ使用了hamcrest-all-1.1,它沒有這個實現。我發現它在1.2或更高版本。 –