我是 mockito 的忠实粉丝,不幸的是,对于我使用 Java 8 的一个项目,它对我来说失败了......
设想:
public final class MockTest
{
@Test
public void testDefaultMethodsWithMocks()
{
final Foo foo = mock(Foo.class);
//when(foo.bar()).thenCallRealMethod();
assertThat(foo.bar()).isEqualTo(42);
}
@FunctionalInterface
private interface Foo
{
int foo();
default int bar()
{
return 42;
}
}
}
不幸的是,测试失败并foo.bar()
返回 0。
当我取消注释该when()
行时,我得到一个堆栈跟踪......
java.lang.NoSuchMethodError: java.lang.Object.bar()I
at com.github.fge.lambdas.MockTest.testDefaultMethodsWithMocks(MockTest.java:18)
这是 maven 上可用的最新稳定版本;关于 Java 8 中的这个新功能,谷歌搜索并没有告诉我太多关于 mockito 的状态......
spy()
除了实现接口和在接口上(这行得通)之外,你能不能让它以其他方式工作?