Hamcrest匹配枚举值?

时间:2015-09-28 18:22:21

标签: java junit enums hamcrest

我可能会遗漏一些非常明显的东西,当我看到它时,我会打击自己。

我正在尝试测试一个返回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");
    ...
    ...
  }

我没看到什么?

1 个答案:

答案 0 :(得分:4)

假设这是一个编译器错误 - 它似乎是 - 而不是运行时错误,我必须假设你有两个不同的类型PolicyComplianceType,在不同的包中,并且BuildType.getBuildInfo()返回的不同于您在测试类中import编辑的内容。如果这与您当前的代码不一致,那么类BuildType可能是陈旧的,需要重新编译(似乎不太可能是过时的测试类)。同样,编译器可能依赖于类BuildType的过时版本,即使该类的当前是最新的。