我想断言 List<Achievement>包含 TestAchievement 类型的成员.
这是我的断言:
List<Achievement> achievements; // Populated elsewhere
assertThat(achievements,hasItem(isA(TestAchievement.class)));
这个不编译,报错:
The method assertThat(T, Matcher) in the type Assert is not applicable for the arguments (List, Matcher<Iterable<TestAchievement>>)
使用 Hamcrest 进行此类断言的正确语法是什么?
最佳答案
感谢大家的帮助。
这里的帖子表明这是 Hamcrest 的一个缺陷,所以当我发现我使用的 mvn/ivy 依赖声明已过期时,我前往 hacmrest 站点注册了一个错误,给了我一个Hamcrest 的旧版本。
1.1 中存在此错误,如果使用
声明,则为最新版本<dependency org="org.hamcrest" name="hamcrest-all" rev="1.1">
但是,正确的依赖声明是:
<dependency org="org.hamcrest" name="hamcrest-library" rev="1.3.RC2"/>
更新到此解决了该问题。我的测试中使用的语法是:
assertThat(achievements, hasItem(isA(TestAchievement.class)));
关于Java Hamcrest : Collection contains item of type,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4981586/