Запустите тест 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.

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