如何使用jersey测试框架配置部署servlet上下文

时间:2016-02-07 22:11:38

标签: java tomcat servlets junit jersey

所以我尝试使用JUnit测试我通过Jersey 2公开的API。我在Tomcat服务器上使用它,它使用以下context.xml连接到Oracle DB:

/META-INF/context.xml :     

<Context>

  <Resource name="jdbc/DeliveryDB"
            auth="Container"
            type="javax.sql.DataSource"
            username="usernamee"
            password="password"
            driverClassName="oracle.jdbc.OracleDriver"
            url="someurl"
            maxTotal="3"
            maxIdle="3" />

</Context>

以下是JUnit代码:

@Override
protected TestContainerFactory getTestContainerFactory() {
    return new GrizzlyWebTestContainerFactory();
}

@Override
protected DeploymentContext configureDeployment(){
    return ServletDeploymentContext
            .forServlet(new ServletContainer( new ResourceConfig( MyResource.class )
                    .packages("provider_package") ) )
            .contextParam("contextConfigLocation", "/META-INF/context.xml")
            .initParam(ServerProperties.PROVIDER_PACKAGES, "provider_package")
            .build();
}

@Test
public void test () throws Exception 
{   
    String result = target("targetURL")
            .request(MediaType.APPLICATION_JSON)
            .get(String.class);

    assertEquals("OK", result);
}

当我直接在上面运行测试时,它会进入&#34; targetURL&#34;所指向的资源。正好。但是,在该资源中,它尝试连接到数据库,以便它可以获取某些元素。但是,在发生上下文查找时失败。当我使用Postman手动测试它直接触摸URL时,它可以正常工作。

我认为它正在发生,因为这个部署的servlet没有正确看到我的context.xml文件,或者它没有看到我的Tomcat服务器或其他东西。我不确定接下来的步骤是什么,而且我在这一点上漫无目的地谷歌搜索。任何帮助表示赞赏。谢谢!

0 个答案:

没有答案