我在此处描述了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。
是否可以在Jetty容器(环境)中运行TestNG测试,以便我可以访问我的war(应用程序)可以访问的所有JNDI和Spring上下文?
在我看来,测试总是在某种孤立的环境中执行,这需要它自己的设置,但如果是这样的话,那么首先运行Jetty似乎毫无意义。除了那些我需要进行一些HTTP调用来测试我的REST端点的情况,但事实并非如此。
答案 0 :(得分:0)
经过一番研究后,我终于找到了一种方法来运行我的测试:
InitialContext
)
配置XML。我的目标是重用现有的Web容器环境。由于我没有成功进行“容器内测试”,而是在预集成测试阶段实际运行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
...
}
}
这不是我第一次看到它或想要这样做的方式(当我发布问题时),但是我现在提出的最接近的解决方案。也许不是最好的,所以我当然会欣赏替代方案,建议和指示。