Po przełączeniu na język Java 1.8. JDK niektóre z moich klas testowych nie mogą się skompilować. Przykład klasie realizacji:Java 1.8 z Mockito 1.9.5 daje błędy kompilacji
import java.util.concurrent.Callable;
import java.util.concurrent.Future;
public class ImplClass {
public <T> Future<T> executeTask(final Callable<T> task) {
return null;
}
}
I tu jest klasa Test z Mockito:
import static org.mockito.Matchers.any;
import static org.mockito.Mockito.mock;
import static org.mockito.Mockito.when;
import java.util.concurrent.Callable;
import org.junit.Before;
public class TestClass {
private ImplClass implClassMock;
@Before
public void setUp() {
implClassMock = mock(ImplClass.class);
when(implClassMock.executeTask(any(Callable.class))).thenReturn(null);
}
}
otrzymuję komunikat o błędzie: The method executeTask(Callable<T>) in the type ImplClass is not applicable for the arguments (Callable)
Przełączanie z powrotem do Javy kompilatora 1.7 wszystko jest w porządku.
Każdy pomysł, jak rozwiązać ten problem?
Dlaczego klasa ImplClass powinna być ogólna? – Juergen