Почему PowerMock пытается загрузить файл server.xml, если статический класс смоделирован?

Я пытаюсь выполнить модульное тестирование кода, который имеет дело с ведением журнала сообщений, что приводит к большой зависимости от среды. Этот Message Logger — это платформа, используемая всеми разработчиками в разных командах. Я использовал PowerMock для того же, поскольку класс Logging является статическим классом.

Несмотря на то, что тест Junit Unit запускает Green после использования Power Mock, он по-прежнему пытается загрузить файл server.xml.

Вызовы класса следующие

Вызовы класса модульного теста -> вызовы класса статического регистратора -> класс статической среды.

Этот статический класс среды занимается загрузкой и анализом файла server.xml.

Я также пробовал следующее, но даже тогда его tring загружает файл xml:

@RunWith(PowerMockRunner.class)

@PrepareForTest({Logger.class,EnvFunctions.class})

PowerMockito.mockStatic(Logger.class);

PowerMockito.mockStatic(EnvFunctions.class);

Нужно ли мне выполнить дополнительную работу, чтобы он больше не пытался загрузить этот файл?

Я пытаюсь издеваться над статическим классом void и также пытался использовать doNothing и подавлять. но не получается

doNothing.when(Logger.class);

suppress(everythingDeclaredIn(Logger.class));

person user3534861    schedule 21.04.2014    source источник


Ответы (1)


Спасибо за ответ.

Я смог решить это с помощью приведенного выше объяснения

Он пытался загрузить файл server.xml, потому что Logger.class имеет статический блок инициализатора, который вызывал другой статический метод, связанный с загрузкой файла xml.

@SuppressStaticInitializationFor аннотация для powermock сделала свое дело

@RunWith(PowerMockRunner.class)

@PrepareForTest({Logger.class})

@SuppressStaticInitializationFor("org.mycompany.Logger")
public Class A{
PowerMockito.mockStatic(Logger.class);
}
person user3534861    schedule 23.04.2014