簡體   English   中英

是否可以在具有JNDI和spring上下文的Jetty容器中運行TestNG集成測試?

[英]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端點的情況除外,但事實並非如此。

經過一番研究,我終於找到了一種運行測試的方法:

  1. 從我的Jetty配置XML配置的JNDI上下文( InitialContext )。
  2. 具有一些bean的Spring上下文,需要那些JNDI資源進行初始化。

我的目標是重用現有的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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM