Запустите тест JUnit с новым Spring Context
Я написал два класса модульных тестов, используя JUnit4
, Они оба работают нормально по отдельности, но при запуске их один за другим (например, с помощью mvn test), второй тест не пройден.
Причина, по которой второй тест не пройден, заключается в том, что первый тест изменил компонент в первом тесте. Второй тест хочет использовать свежий экземпляр этого компонента.
Модульному тесту должен быть присвоен новый Контекст для каждого класса модульного теста. Spring имеет первоклассную поддержку контекстного кэширования, которую я хотел бы отключить. Как я могу настроить Spring
перезапустить новый Context
для каждого класса юнит-теста?
Мои тестовые классы настроены так:
@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(locations = "classpath:a.context.xml")
public class AUnitTest {
@Test
public void someTestMethod{
doSomeFancyStuff();
}
}
1 ответ
Ты можешь использовать @DirtiesContext
на метод испытаний (или тестовый класс). Spring ApplicationContext будет перезагружен после выполнения теста.
Вы также можете использовать Mockito.reset() после тестирования. Это сэкономит вам время загрузки контекста Spring.