Я большой поклонник 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; поиск в Google мало что сказал мне о статусе mockito в отношении этой новой функциональности в Java 8...
Можете ли вы заставить его работать каким-то другим способом, кроме реализации интерфейсов и spy()
на них (это работает)?