所以我尝试使用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服务器或其他东西。我不确定接下来的步骤是什么,而且我在这一点上漫无目的地谷歌搜索。任何帮助表示赞赏。谢谢!