模拟时的 jmockit 问题 class 包含返回 Integer 的方法

jmockit issue when mocked class contains method returning Integer

JMockit 不是 return 将 Integer 设置为期望中的 return 值。

public interface Foo {
    Integer getInt();
}

@Test
public void test(@Mocked final Foo foo) {
    final Integer anyInt = 3;
    new Expectations() {{
        foo.getInt(); result = anyInt;
    }};
    assertThat(foo.getInt(), equalTo(anyInt));
}

失败并显示消息:

java.lang.AssertionError:
Expected: <3>
  but: was <0>

知道为什么吗?

JMockit 1.14

谢谢

JMockit Expectations API 有一组 any 字段用于参数匹配,包括 anyInt。因此,期望块内出现的“anyInt”是该字段,不是同名局部变量。

(如果您使用的是体面的 Java IDE,它应该显示与用于局部变量的颜色不同的字段,以便于发现错误。)