Mockit重新定义了由于接口或通用抽象而无法工作的方法

时间:2012-05-07 21:23:43

标签: java generics testng jmockit

我试图找出为什么Mockit不能使用以下代码:

public class TestClass {
    @Test
    public void test() {
        Mockit.redefineMethods(ExecuterClass.class, new Object() {
            @SuppressWarnings("unused")
            public SomeService getService() {
                return new MockSomeServiceImpl();
            }
        });

        // Code to run test
    }
}

public abstract class ExecuterClass<T,U,V,W> {
    // Other methods/variables
    public SomeService getService() {
        return someProvider.getService();
    }
} 

public interface SomeService {
    // Some method definitions
}

public class MockSomeServiceImpl implements SomeService {
    // Some method implementations
}

我得到的错误是:

java.lang.IllegalAccessError: tried to access class TestClass from class ExecuterClass

关于如何解决这个问题的任何想法?最后,我希望测试使用MockSomeServiceImpl方法而不是SomeService实现中的方法。

SomeService是由WSDL生成的,因此我没有someObject.getService()返回的实现。所以我不能做Mockit.redefineMethods(SomeServiceImpl.class,MockSomeServiceImpl.class)

0 个答案:

没有答案