[java] PowerMockRunner로 JUnit 테스트를 실행할 수 없음


Answers

PowerMock에 대해 기록 된 버그가 있습니다 : https://code.google.com/p/powermock/issues/detail?id=531

JUnit은 PowerMock이 리플렉션을 통해 액세스하는 내부 필드 이름 중 일부를 변경하여 PowerMock이 올바르게 삽입 할 수있는 능력을 깨뜨린 것으로 보입니다.

Question

내가 Gradle 기반 Java 프로젝트를 가지고 있는데, PowerMock을 사용하여 개인 메소드를 조롱하고 싶었습니다. 문제는 @RunWith(org.powermock.modules.junit4.PowerMockRunner.class) 주석을 추가 할 때 항상 다음 예외가 발생하므로 PowerMockRunner를 사용할 수 없다는 것입니다.

오류:

org.powermock.reflect.exceptions.FieldNotFoundException: Field 'fTestClass' was not found in class org.junit.internal.runners.MethodValidator.
at org.powermock.reflect.internal.WhiteboxImpl.getInternalState(WhiteboxImpl.java:581)
at org.powermock.reflect.Whitebox.getInternalState(Whitebox.java:308)
at org.powermock.modules.junit4.internal.impl.testcaseworkaround.PowerMockJUnit4MethodValidator.validate TestMethods(PowerMockJUnit4MethodValidator.java:79)
at org.powermock.modules.junit4.internal.impl.testcaseworkaround.PowerMockJUnit4MethodValidator.validate InstanceMethods(PowerMockJUnit4MethodValidator.java:49)
at org.junit.internal.runners.MethodValidator.validateMethodsForDefaultRunner(MethodValidator.java:51)
at org.powermock.modules.junit4.internal.impl.PowerMockJUnit44RunnerDelegateImpl.validate(PowerMockJUnit44RunnerDelegateImpl.java:108)
...

다음은 내 테스트 종속성입니다.

testCompile 'junit:junit:4.+',
            'org.powermock:powermock-core:1.5.6',
            'org.powermock:powermock-module-junit4:1.5.6',
            'org.powermock:powermock-api-mockito:1.5.6'

완전히 비어있을 때 테스트 자체가 실패합니다 (초기화 오류).

@RunWith(PowerMockRunner.class)
public class SomeTest {
    @Test
    public void testSomething() {
    }
}

어떤 아이디어가 잘못된 것일까 요? PowerMock을 사용하는 다른 테스트는 잘 작동합니다 (PowerMockRunner를 사용하지 않는 테스트).

인사와 도움을 주셔서 감사합니다! 벤






Links