PowerMockRunner로 JUnit 테스트를 실행할 수 없음
PowerMock을 사용하여 개인 메서드를 조롱하려는 Gradle 기반 Java 프로젝트가 있습니다. 문제는 @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를 사용하지 않음).
도움을 주셔서 감사합니다. 벤
JUnit 4.12 및 PowerMock < 1.6.1을 사용할 때 발생하는 버그입니다. 이 문제는 PowerMock 1.6.1에서 해결되었습니다. 그에 따라 종속성을 업데이트하십시오.
testCompile 'junit:junit:4.12',
'org.powermock:powermock-core:1.6.1',
'org.powermock:powermock-module-junit4:1.6.1',
'org.powermock:powermock-api-mockito:1.6.1'
PowerMock을 업그레이드할 수 없으면 JUnit 4.11을 사용할 수 있습니다.
testCompile 'junit:junit:4.11',
'org.powermock:powermock-core:1.5.6',
'org.powermock:powermock-module-junit4:1.5.6',
'org.powermock:powermock-api-mockito:1.5.6'
문제에 대한 자세한 내용을 밝히는 스택 추적의 행을 더 추가해 주시겠습니까?
PowerMock에 대해 버그가 기록되었습니다. https://code.google.com/p/powermock/issues/detail?id=531
JUnit은 PowerMock이 리플렉션을 통해 액세스하는 일부 내부 필드 이름을 변경하여 PowerMock이 자체적으로 적절하게 주입하는 기능을 중단한 것으로 보입니다.
Stefan이 말한 것을 확인하고 그 위에 추가해야 합니다.
@PrepareForTest({<The class/es you are Mocking>, ...})
테스트 준비가 없으면 PowerMockRunner는 어떤 클래스가 조롱되는지 알 수 없습니다.
ReferenceURL : https://stackoverflow.com/questions/26192929/unable-to-run-junit-test-with-powermockrunner
'IT이야기' 카테고리의 다른 글
각 그룹 내에서 하나의 쉼표로 구분된 문자열로 열 축소/연결/집계 (0) | 2021.10.13 |
---|---|
실제로 1KB(KiloByte)는 1024바이트인가 (0) | 2021.10.13 |
Iterator::map이 Result::Err을 반환할 때 반복을 중지하고 오류를 반환하려면 (0) | 2021.10.12 |
생성자에서 상태를 정의하거나 속성 이니셜라이저를 사용하는 것이 더 낫은가 (0) | 2021.10.12 |
모든 IOS 장치에서 크롬을 디버그하는 방법 (0) | 2021.10.12 |