Hamcrest 匹配枚举值?

Hamcrest matching enum values?

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

我正在尝试测试 returns 一个带有 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();

枚举策略合规类型:

  public enum PolicyComplianceType {
    CALCULATING("Calculating..."),
    NOT_ASSESSED("Not Assessed"),
    DID_NOT_PASS("Did Not Pass");
    ...
    ...
  }

我没看到什么?

假设这是一个编译器错误——它看起来是——而不是 运行 时间错误,我必须假设你有两个不同的类型,名为 PolicyComplianceType,在不同的包中,并且 BuildType.getBuildInfo() returns 与在您的测试 class 中 import 不同。如果这与您当前的代码不一致,则可能 class BuildType 已过时,需要重新编译(似乎不太可能是测试 class 已过时)。同样,编译器可能依赖于 class BuildType 的过时版本,即使当前 source class是最新的。