Просто ради полноты:
У меня была похожая проблема с Java 1.7 в режиме Java 1.6, TestNG и jMockit 1.5 и 1.16 с использованием метода MockUp <...> класса.
Мой класс:
public class MyCache extends AbstractLazyCache<ExchangeObject> {...}
Издеваемый метод:
public abstract class AbstractLazyCache<CachedObject> extends AbstractCache {
// ...
protected void putCachedObject(String tenantId, String objectId, CachedObject o, Date expiryDate) {...}
}
Оригинальная попытка издеваться:
new MockUp<MyCache>() {
// invoked once manually, once on expired cache
@Mock(invocations = 2)
public void putCachedObject(Invocation inv, String tenantId, String objectId,
RangeExchange o, Date expiryDate) {
// expire one second in the future
inv.proceed(tenantId, objectId, o, new Date(System.currentTimeMillis() + waitTimeMillis));
}
};
Я получил похожее исключение. После добавления дополнительного универсального параметра после public мой тестовый пример, наконец, прошел успешно:
new MockUp<MyCache>() {
// invoked once manually, once on expired cache
@Mock(invocations = 2)
public <RangeExchange> void putCachedObject(Invocation inv, String tenantId, String objectId,
RangeExchange o, Date expiryDate) {
// expire one second in the future
inv.proceed(tenantId, objectId, o, new Date(System.currentTimeMillis() + waitTimeMillis));
}
};