此匹配器检查匹配器的集合,如果它们都成功,则成功。
签名上写着:
public static <T> Matcher<T> allOf(Iterable<Matcher<? extends T>> matchers)
为什么这会采用可迭代的
Matcher<? extends T>
而不是
Matcher<? super t>
如果它是正确的,请解释。
将从匹配(测试)的对象推断出类型,因此我希望iterable能够保持与匹配的对象或其任何超类兼容的匹配器。类似地,允许iterable保持仅与子类兼容的匹配器似乎是错误的。
答案 0 :(得分:4)
(回答自己的问题)
我的不好 - 意外地使用旧版本。这是Hamcrest 1.2中的fixed in 2007。但旧的“扩展”版本包含在JUnit中,直到2012年12月发布的JUnit 4.11。