你能让 mockito (1.10.17) 在接口中使用默认方法吗?
2022-09-01 17:30:09
我是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;
}
}
}
不幸的是,测试失败并返回 0。foo.bar()
当我取消注释该行时,我得到一个堆栈跟踪...when()
java.lang.NoSuchMethodError: java.lang.Object.bar()I
at com.github.fge.lambdas.MockTest.testDefaultMethodsWithMocks(MockTest.java:18)
这是maven上可用的最新稳定版本;谷歌搜索并没有告诉我很多关于mojito在Java 8中这个新功能方面的地位......
你能让它以其他方式工作,而不是实现接口和它们(这有效)吗?spy()