몇 가지 테스트를 위해 PowerMockRunner가 필요하며 null이 아닌 정적 공개 필드를 사용하는 타사 라이브러리를 사용합니다.PowerMockRunner를 확장하고 공개 정적 필드를 설정하십시오.
이 작동 : 이제이 작동하지 않습니다
public class MyRunner extends PowerMockRunner {
public MyRunner(Class<?> klass) throws Exception {
super(klass);
SomeStaticClass.variable = mock(Variable.class);
}
}
:
@RunWith(PowerMockRunner.class)
public class TestSomething {
private ClassToTest fixture;
@Before
public void setup() {
SomeStaticClass.variable = mock(Variable.class);
fixture = new ClassToTest();
}
@Test
public void create() {
System.out.println(SomeStaticClass.variable); // prints the mock
assertNotNull(SomeStaticClass.variable); // passes
}
}
그래서 나는이 같은 자신의 PowerMockRunner에
SomeStaticClass.variable = mock(Variable.class);
부분을 데려 가고 싶다는 결정
@RunWith(MyRunner.class)
public class TestSomethingWithMyRunner {
private ClassToTest fixture;
@Before
public void setup() {
fixture = new ClassToTest();
}
@Test
public void create() {
System.out.println(SomeStaticClass.variable); // prints null
assertNotNull(SomeStaticClass.variable); // fails
}
}
덮어 쓰기 실행 방법도 작동하지 않습니다.
@Override
public void run(RunNotifier notifier) {
SomeStaticClass.variable = mock(Variable.class)
super.run(notifier);
}
테스트가 처리되기 전에 정적 공개 필드를 설정하려면 어디에서 연결해야합니까?