Защо PowerMock се опитва да зареди файла server.xml, ако статичният клас е подиграван?

Опитвам се да тествам единичен код, който се занимава с регистриране на съобщения, което води до голяма зависимост от околната среда. Този Message Logger е рамка, използвана от всички разработчици в екипи. Използвал съм PowerMock за същото, тъй като класът Logging е статичен клас.

Въпреки че тестът на Junit Unit работи в зелено след използване на Power Mock, той все още се опитва да зареди файла server.xml.

Обажданията на класа са както следва

Unit Test Class calls -> Static Logger Class calls-> Static Environment Class.

Този статичен клас на среда се занимава със зареждането и анализирането на файла server.xml.

Опитах и ​​следното, но дори и тогава се опитва да зареди 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