我可能会遗漏一些非常明显的东西,当我看到它时,我会打击自己。
我正在尝试测试一个返回Enum with Hamcrest的方法的输出:
@Test
public void testGetBuildInfo() throws Exception {
BuildType build = repository.getBuildInfo(169552, null, 582892L);
assertThat(build.getPolicyComplianceStatus(), IsEqual.equalTo(PolicyComplianceType.DID_NOT_PASS));
}
但我收到了以下错误:
The method assertThat(T, Matcher<? super T>) in the type MatcherAssert is not applicable for the arguments (PolicyComplianceType, Matcher<PolicyComplianceType>)
有问题的BuildType签名:
public PolicyComplianceType getPolicyComplianceStatus();
Enum PolicyComplianceType:
public enum PolicyComplianceType {
CALCULATING("Calculating..."),
NOT_ASSESSED("Not Assessed"),
DID_NOT_PASS("Did Not Pass");
...
...
}
我没看到什么?
答案 0 :(得分:4)
假设这是一个编译器错误 - 它似乎是 - 而不是运行时错误,我必须假设你有两个不同的类型PolicyComplianceType
,在不同的包中,并且BuildType.getBuildInfo()
返回的不同于您在测试类中import
编辑的内容。如果这与您当前的代码不一致,那么类BuildType
可能是陈旧的,需要重新编译(似乎不太可能是过时的测试类)。同样,编译器可能依赖于类BuildType
的过时版本,即使该类的当前源是最新的。