当前位置: 首页 > 知识库问答 >
问题:

用于比较超类和子类的Hamcrest匹配器

葛承嗣
2023-03-14

我有以下课程:

abstract class Answer<T> {}
class AnswerInt extends Answer<Integer> {}
class AnswerText extends Answer<String> {}

现在我想在下面的测试中使用Hamcrest Matcher(它只是一个简化的示例):

@Test
public void test() {
    Answer a = new AnswerInt(5);
    assertThat(a, is(new AnswerInt(5))); // Compile error
}    
Map<String,Answer> answerMap = questionary.getAnswerMap();
assertThat(answerMap, allOf(
    hasEntry("var1", new AnswerInt(5)),
    hasEntry("var2", new AnswerText("foo"))
));

但我也犯了同样的错误。

我使用的是Hamcrest 1.3版

共有1个答案

晋弘义
2023-03-14

如果您使用Java8运行测试,它将编译。对于以前的版本,您必须给编译器一个提示:

@Test
public void test() {
    Answer a = new AnswerInt(5);
    assertThat(a, Matchers.<Answer>is(new AnswerInt(5)));
}
 类似资料: