코드베이스에서 널리 사용되는 기본 클래스를 변경하여 정적 초기화 블록을 추가했습니다. 지금이 어떤 경우에 작동하고PowerMock @SuppressStaticInitializationFor가 테스트 클래스 내의 중첩 클래스에 대해 작동하지 않습니다.
@SuppressStaticInitializationFor("com.mycompany.WidelyUsedBaseClass")
을 추가하여 작동하도록 노력하고, 우리의 단위 테스트의 모든 통해 갈거야,하지만 난 그것을 내부 클래스가 테스트 클래스와 함께 동작하지 않습니다 WidelyUsedBaseClass
을 확장합니다. (왜 이러한 중첩 클래스가 존재하는지 묻지 말고 표준 모의 테스트가 충분하지 않은 이유는 모르겠다. 어쨌든 테스트 로직을 이해하고 있다고 확신하지 못하기 때문에 이것을 리 팩터로 사용하려고하지 않는다. 이러한 내부 클래스를 사용하여)
여기 무슨 뜻인지의 예 :.
@RunWith(PowerMockRunner.class)
@SuppressStaticInitializationFor("com.mycompany.WidelyUsedBaseClass") // <-- This isn't working! I can still see <clinit> in the exception when the test fails...
public class SomeTestsFromAnotherTeam
{
// test logic...
// more test logic...
Stub myStub = new Stub();
// more test logic...
private class Stub extends WidelyUsedBaseClass
{
// some other logic...
}
}
나는 문제가 new Stub()
전화에서 발생 생각합니다.