Какова область действия аннотации @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
    }
}

Таким образом, вы можете контролировать, какой метод должен подавлять статические инициализаторы (конструкторы) и для какого класса.

Другие вопросы по тегам