Мне нужно PowerMockRunner для нескольких моих тестов, и я использую стороннюю библиотеку, которая использует статические общедоступные поля, которые могут быть не пустыми.расширить PowerMockRunner и установить публичные статические поля
Это работает:
@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
}
}
Так что я решил, что я хочу поставить SomeStaticClass.variable = mock(Variable.class);
часть в собственном PowerMockRunner, как это:
public class MyRunner extends PowerMockRunner {
public MyRunner(Class<?> klass) throws Exception {
super(klass);
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);
}
Где я могу подключиться, установить некоторые статические общедоступные поля перед обработкой тестов?