是否有一个版本的JUnit断言使用Hamcrest的'describeMismatch'功能?

Jac*_*cob 6 java junit unit-testing hamcrest

在JUnit的每一个版本我都试过(高达4.8.1),一个失败的assertThat显示,看起来像一个错误信息:

预期:[describeTo]
得到:[对象的字符串表示]

换句话说,它将显示对象的toString()而不是匹配器中的不匹配描述.如果我使用org.hamcrest.MatcherAssert.assertThat的assertThat,那么它会调用"describeMismatch",并显示一个更实用的错误消息.

我是否正确使用Junit,或者目前没有JUnit版本能够满足我的需求吗?那么大多数人都会使用Hamcrest声明吗?

Gru*_*eck 3

简短的回答:不。

据我所知,最新版本的 Hamcrest (1.2) 引入了与 JUnit 当前依赖的版本 1.1 不兼容的类型签名。我不确定 Hamcrest 的更改所造成的损害程度(可以这么说),但 JUnit 团队似乎并不急于升级(请参阅未解决的问题)。

我不完全确定我已经解决了我的问题,但我计划使用MatcherAssert.assertThat(). 这可能需要特定版本的 JUnit(我相信是 junit-dep-xxx),它不会与 Hamcrest 发生类路径冲突。否则,您在拨打NoSuchMethodErrors时可能会收到。assertThat()describeMismatch()