AbstractApplicationContext еще не обновлен, исключение - PullRequest
0 голосов
/ 11 сентября 2018

У меня есть отдельное приложение jar, которое использует контекст весны, как показано ниже:

class MainClass {    
    public static void main(final String[] args) {
        AbstractApplicationContext applicationContext = new 
        GenericXmlApplicationContext("file-path-to-xml-config");
        ClassA classA = applicationContext.getBean(ClassA.class);
        ...
    } 
}

Я пытаюсь провести интеграционный тест по методу, указанному ниже:

@ContextConfiguration(locations = { "file-path-to-test-xml-config" })
public class AbstractIT extends AbstractTestNGSpringContextTests {
    @Inject
    private ClassB classB;

    @Test
    public void testMain() {
        classB.someMethod();
        MainClass.main(null);
    }
}

Выше приведенных настроек ниже исключения:

java.lang.IllegalStateException: org.springframework.context.support.AbstractApplicationContext__Generated_OpenPojo@356f20b7 еще не был обновлен

Создается впечатление, что создание контекста как внутри тестового примера, так и изнутри main конфликтует, и, следовательно, выдает исключение при создании его экземпляра из метода main.

Я не хочу менять инициализацию пружины из метода main, так как это отдельное приложение. Также я хотел загрузить пружинный контекст в тесте, так как загружаю тестовый контекст в тесте.

Есть ли способ, которым я могу избавиться от этого исключения?

1 Ответ

0 голосов
/ 11 сентября 2018

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

При вызове интегрирующего теста вы загружаете свой контекст / приложение, которое похоже на вызов main. Так что лучше протестировать модульный код.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...