Java 是否匹配枚举值?

Java 是否匹配枚举值?,java,junit,enums,hamcrest,Java,Junit,Enums,Hamcrest,我可能错过了一些非常明显的东西,当我看到它时,我会打自己 我试图测试一个方法的输出,该方法返回一个带有Hamcrest的枚举: @Test public void testGetBuildInfo() throws Exception { BuildType build = repository.getBuildInfo(169552, null, 582892L); assertThat(build.getPolicyComplianceStatus(), IsEqual.eq

我可能错过了一些非常明显的东西,当我看到它时,我会打自己

我试图测试一个方法的输出,该方法返回一个带有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>)
枚举策略遵从性类型:

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

我没有看到什么?

假设这是一个编译器错误(看起来是),而不是一个运行时错误,我必须假设在不同的包中有两个名为PolicyComplianceType的不同类型,BuildType.getBuildInfo返回的类型与在测试类中导入的不同。如果这与您当前的代码不一致,那么可能是类BuildType过时了,需要重新编译—看起来不太可能是过时的测试类。同样,编译器可能依赖于类BuildType的过时版本,即使该类的当前源代码是最新的。

smack正如我所说,我会自己动手。事实上,我有一个包/名称冲突,我没有注意到。当我读到你的答案时,我仔细检查了一下,事实上,返回类型来自一个包,而匹配者使用的是另一个包。谢谢你纠正我的错误。
  public enum PolicyComplianceType {
    CALCULATING("Calculating..."),
    NOT_ASSESSED("Not Assessed"),
    DID_NOT_PASS("Did Not Pass");
    ...
    ...
  }