Можно ли запустить тестовые тесты TestNG в контейнере Jetty с JNDI и весенним контекстом?

Gaponenko Andrei спросил: 28 апреля 2018 в 08:44 в: java

У меня есть конфигурация Maven + Failsafe + Jetty, описанная здесь: http://maven.apache.org/surefire/maven-failsafe-plugin/usage.html.

Конфигурация My Jetty для локальной разработки в XML-файле с некоторыми JNDI, как описано здесь: https://www.eclipse.org/jetty/documentation/9.3.x/using-jetty-jndi.html.

Можно ли запускать тесты TestNG внутри контейнера Jetty (среда), чтобы у меня был доступ ко всем контекстам JNDI и Spring, к которым моя война (приложение) имеет доступ к?

Мне кажется, что тесты всегда выполняются в какой-то изолированной среде, которая требует его собственной установки, но если это так, кажется, действительно бессмысленно запускать Jetty в первую очередь. За исключением, может быть, тех случаев, когда мне нужно сделать некоторые HTTP-вызовы для тестирования моих конечных точек REST, но это не так.


1 ответ

Есть решение
Gaponenko Andrei ответил: 29 апреля 2018 в 05:52

После некоторых исследований я наконец нашел способ запускать мои тесты с помощью:

  1. Контекст JNDI (InitialContext), сконфигурированный из моего XML JettyConfiguration.
  2. Весенний контекст с некоторыми компонентами, которые требовали этих JNDI-ресурсов для инициализации.

Моя цель состояла в том, чтобы повторно использовать существующую среду веб-контейнера. И поскольку я не имел успеха с "испытаниями в контейнере", вместо фактического запуска Jetty на этапе предварительной интеграции, я решил написать собственную реализацию ContextLoader для @ContextConfiguration

Вот общая идея моего решения:

public class ITestContextLoader extends GenericXmlWebContextLoader {    @Override
    protected void loadBeanDefinitions(...) {         // Initial Context configuration        Resource jettyXml = Resourse.newSystemResource("jetty-env.xml");
        InputStream resourceStream = jettyXml.getInputStream();
        XmlConfiguration xmlConfig = new XmlConfiguration(resourceStream);        xmlConfig.configure(); // for some reason it's not only returns 
                               // instance of configured context, but also 
                               // populates InitialContext with JNDI resources        // Bean definitions loading        ... 
    }
}

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

Krishnan Mahadevan ответил: 29 апреля 2018 в 12:19
Вы должны пойти дальше и принять свой ответ, чтобы вопрос закрылся.