Я использую powermock, чтобы высмеивать метод Logger.getInstance (). Это вызывает проблему, так как кажется, что junit не перезагружает классы, и после того, как первый тестовый тестовый класс имеет неправильный экземпляр регистратора.
public class LoggedClass {
public static Logger log = Logger.getInstance();
....
}
@RunWith(PowerMockRunner.class)
@PrepareForTest({ LoggedClass.class, Logger.class })
public class SomeTests {
private Logger log;
@Before
public void setUp() {
PowerMockito.mockStatic(Logger.class);
log = PowerMockito.mock(Logger.class);
PowerMockito.when(Logger.getInstance()).thenReturn(log);
PowerMockito.mockStatic(LoggedClass.class);
}
@Test
public void firstTest() {
assertTrue(LoggedClass.log == log);
}
@Test
public void secondTest() { // fails
assertTrue(LoggedClass.log == log);
}
}
Тест не пройден, поскольку LoggedClass имеет устаревший экземпляр журнала. Я мог бы явно добавить новый экземпляр логгера, но это громоздко, когда есть много статических переменных, которые необходимо смоделировать.
Как настроить junit на перезагрузку классов при каждом запуске нового теста?