Какова область действия аннотации @SuppressStaticInitializationFor PowerMock?
Кто-нибудь знает, какова область этой аннотации? Например, если у меня есть несколько тестовых классов JUnit, которые выполняются последовательно на одной и той же виртуальной машине, и в первом тесте используется @SuppressStaticInitializationFor, это также подавляет статическую инициализацию для всех последующих тестовых классов? Я спрашиваю, потому что у меня сложилось впечатление, что статическое состояние сохраняется в течение всей жизни JVM.
1 ответ
Объем для каждого загрузчика классов. Как только вы используете @SuppressStaticInitializationFor, это повлияет на класс во всех других тестах. Вы можете, однако, @SuppressStaticInitializationFor на уровне метода, и это не повлияет на другие тесты.
Вы можете использовать аннотацию @SuppressStaticInitializationFor на уровне класса или на уровне метода теста, где вы хотите, чтобы она была подавлена.
@RunWith(PowerMockRunner.class)
@SuppressStaticInitializationFor("com.main.java.CassName")
public class TestClassName extends PowerMockTestCase {
//code
@SuppressStaticInitializationFor("com.main.java.AnotherClassName")
public void testMethod() {
//code
}
}
Таким образом, вы можете контролировать, какой метод должен подавлять статические инициализаторы (конструкторы) и для какого класса.