Как можно проверить "грязный" контекст приложения spring?

spring документация по инфраструктуре гласит:

В маловероятном случае, когда тест может "грязный" контекст приложения, требующих перезагрузки - например, изменение определения bean или состояние объекта приложения - Spring поддержка тестирования обеспечивает механизмы для создания испытательного прибора для перезагрузки конфигураций и перестройте контекст приложения до выполнение следующего теста.

Может кто-нибудь это уточнить? Я просто не понимаю. Примеры были бы приятными.

Ответ 1

Каждый метод теста JUnit предполагается изолированным, то есть не имеет побочных эффектов, которые могли бы привести к другому методу тестирования. Это может быть достигнуто путем изменения состояния beans, которым управляет spring.

Например, скажем, что у вас есть bean, управляемый spring класса MySpringBean, который имеет свойство string со значением "string". Следующий метод тестирования testBeanString будет иметь другой результат, зависящий, если он вызывается до или после метода testModify.

@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(locations={"/base-context.xml"})
public class SpringTests {

    @Autowired
    private MySpringBean bean;

    @Test public void testModify() {
        // dirties the state of a managed bean
        bean.setString("newSring");
    }

    @Test pubic void testBeanString() {
        assertEquals("string", bean.getString());
    }
}

используйте аннотацию @DirtiesContext, чтобы указать, что тестовый метод может изменить состояние spring управляемого beans.