从Python进入Java。我知道这是非常基本的,但似乎还没有在这里提出这个问题,谷歌对我很腼腆。
在Python中,我只是做了类似这样的事情,但Java对象:
assertTrue(min <= mynum and mynum <= max);
答案 0 :(得分:17)
我写道:
assertTrue("mynum is out of range: " + mynum, min <= mynum && mynum <= max);
但从技术上讲,你只需要:
assertTrue(min <= mynum && mynum <= max);
无论哪种方式,请务必写下&&
而不是and
。
答案 1 :(得分:10)
答案 2 :(得分:5)
您也可以使用Hamcrest库,这样更具可读性。
assertThat(mynum,greaterThanOrEqualTo(min));
assertThat(mynum,lessThanOrEqualTo(max));
我不知道这两行是否可以合并。
答案 3 :(得分:2)
this答案延伸:您可以将两者合并为allOf
。
assertThat(mynum, allOf(greaterThanOrEqualTo(min),lessThanOrEqualTo(max)));
Hamcrest中的OR等价物为anyOf
。
答案 4 :(得分:1)
assertTrue(min <= mynum && mynum <= max, "not in range");
最后的评论是可选的。基本上与python版本相同,除了&&
。
答案 5 :(得分:1)
使用&&
而不是and
;除此之外,你写的东西应该有效。
答案 6 :(得分:1)
如果您使用AssertJ,则甚至更具可读性:
assertThat(mynum).isGreaterThanOrEqualTo(min).isLessThanOrEqualTo(max);
另外,AssertionError
打败了assertTrue
版本,因为您不需要提供说明,例如:
java.lang.AssertionError:
Expecting:
<10>
to be less than or equal to:
<42>
如果您使用的是Java 8和AssertJ 3.0.0,则可以使用lambda来指定它:
assertThat(mynum).matches(actual -> actual >= min && actual <= max);
答案 7 :(得分:0)
将 AssertJ 与isCloseTo(expected, offset)
一起使用:
BigDecimal maxNegativeOffset = new BigDecimal("0.0004");
BigDecimal actual = new BigDecimal("0.0005");
BigDecimal maxPositiveOffset = new BigDecimal("0.0006");
Offset<BigDecimal> offset = Offset.offset(new BigDecimal("0.0001"));
Assertions.assertThat(actual)
.isCloseTo(maxNegativeOffset, offset)
.isCloseTo(maxPositiveOffset, offset);
Maven依赖项:https://mvnrepository.com/artifact/org.assertj/assertj-core