[英]Is it possible to run TestNG integration-tests in a Jetty container with JNDI's and spring context?
我在這里描述了Maven + Failsafe + Jetty配置: http : //maven.apache.org/surefire/maven-failsafe-plugin/usage.html 。
我的用於本地開發的Jetty配置在XML文件中定義,帶有一些JNDI,如此處所述: https ://www.eclipse.org/jetty/documentation/9.3.x/using-jetty-jndi.html。
是否可以在Jetty容器(環境)中運行TestNG測試,以便我可以訪問我的戰爭(應用程序)可以訪問的所有JNDI和Spring上下文?
在我看來,測試總是在某種隔離的環境中執行,這需要它自己的設置,但是如果是這樣,首先運行Jetty似乎毫無意義。 可能我需要進行一些HTTP調用以測試我的REST端點的情況除外,但事實並非如此。
經過一番研究,我終於找到了一種運行測試的方法:
InitialContext
)。 我的目標是重用現有的Web容器環境。 而且由於我在“容器內測試”方面沒有成功,因此沒有在集成前的測試階段實際運行Jetty,而是決定為@ContextConfiguration
編寫自己的ContextLoader
實現。
這是我的解決方案的總體思路:
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
...
}
}
這不是我最初看到或想要做的方式(當我發布問題時),而是我暫時想到的最接近的解決方案。 也許不是最好的,所以我當然會喜歡替代方案,建議和指示。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.