После некоторого исследования я наконец нашел способ запустить свои тесты с:
- Контекстом JNDI (
InitialContext
), настроенным из моего XML-файла конфигурации Jetty. - Контекст Spring с некоторымиbean-компоненты, для инициализации которых требовались 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
...
}
}
Это не так, как я видел или хотел сделать это в первую очередь (когда я писалвопрос), но самое близкое решение я придумал на данный момент.Возможно, не самый лучший, поэтому я, безусловно, буду признателен за альтернативы, советы и указатели.