Hamcrest allOf()的签名是错误的吗?

时间:2012-05-25 15:40:43

标签: java junit hamcrest

此匹配器检查匹配器的集合,如果它们都成功,则成功。

签名上写着:

public static <T> Matcher<T> allOf(Iterable<Matcher<? extends T>> matchers)

为什么这会采用可迭代的 Matcher<? extends T>

而不是 Matcher<? super t>

如果它是正确的,请解释。

将从匹配(测试)的对象推断出类型,因此我希望iterable能够保持与匹配的对象或其任何超类兼容的匹配器。类似地,允许iterable保持仅与子类兼容的匹配器似乎是错误的。

1 个答案:

答案 0 :(得分:4)

(回答自己的问题)

我的不好 - 意外地使用旧版本。这是Hamcrest 1.2中的fixed in 2007。但旧的“扩展”版本包含在JUnit中,直到2012年12月发布的JUnit 4.11。