Подтвердить что ты не робот

Перезагрузите контекст приложения Spring после каждого теста

У меня есть тестовый класс, который содержит 2 теста:

@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(locations = { "classpath:applicationContextTest.xml" })
@Transactional
@TransactionConfiguration(defaultRollback = true)

public class MyITest extends implements BeanFactoryAware {

    private BeanFactory beanFactory;

    @Test
    public void test1() throws Exception {}

    @Test
    public void test2() throws Exception {}        
}

Когда я запускаю тесты индивидуально, я не получаю ошибок, но когда я запускаю все тесты вместе, происходит сбой. Этот сбой связан с некоторыми тестами, изменяющими контекст приложения:

  b = beanFactory.getBean("logDataSource", BasicDataSource.class);
  b.set ...

Есть ли возможность выполнить этот тест отдельно? Я просто хочу, когда test1 начнет читать все необходимые вещи, а затем запустит тест, а затем закроет все необходимые вещи. А затем запустите test2.

4b9b3361

Ответ 1

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

Java Doc

Spring документация

По умолчанию это будет означать, что контекст приложения является грязным после запуска всего тестового класса. Если вы хотите пометить контекст как грязный после одного тестового метода, тогда вы можете либо аннотировать метод теста, либо установить свойство classMode в AFTER_EACH_TEST_METHOD на аннотации уровня класса.

@DirtiesContext(classMode = ClassMode.AFTER_EACH_TEST_METHOD)