1

次のコードで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

これを修正する方法について何かアイデアはありますか?最後に、SomeService実装のメソッドではなく、MockSomeServiceImplメソッドをテストで使用するようにします。

SomeServiceはWSDLによって生成されたため、someObject.getService()が返す実装はありません。したがって、Mockit.redefineMethods(SomeServiceImpl.class、MockSomeServiceImpl.class)を実行できません。

4

0 に答える 0