4

关于 JUnit4 assertThat,我已经看到了这两种方式。一个比另一个正确还是都一样?

byte[] val;
...
assertThat(val, notNullValue());
        --vs--
assertThat(val, is(notNullValue()));

第二个选项读取“断言 val 不为空”,这听起来更好。(另一方面,它可能是多余的。)

我已经使用了这两种方法,它们似乎产生了正确的结果。

4

2 回答 2

8

Hamcrest 文档说:

Hamcrest 努力使您的测试尽可能具有可读性。例如,匹配is器是一个包装器,它不会向底层匹配器添加任何额外的行为。以下断言都是等价的

assertThat(theBiscuit, equalTo(myBiscuit));
assertThat(theBiscuit, is(equalTo(myBiscuit)));
assertThat(theBiscuit, is(myBiscuit));

最后一种形式是允许的,因为is(T value)它被重载到 return is(equalTo(value))

于 2013-03-22T12:46:20.330 回答
2

这两种方式没有区别。该is()方法主要是为了提高可读性而引入的。

于 2013-03-22T12:46:12.297 回答