[英]Jersey e2e integration tests for in-memory database using Spring's JDBCTemplate
设计和运行使用jersey-test-framework-provider-inmemory
,h2数据库和org.springframework.jdbc.core.JdbcTemplate
Jersey REST API的e2e集成测试的正确方法是什么?
要求:
测试范围应该是端到端的:从资源开始并通过所有应用程序到h2数据库 。
写作测试:
目前,如果从IDE的JUnit中一起运行,我的JUnit集成测试将失败,主要是因为它们相互干扰(与JUnit并发运行)。 另一个问题是那些应该在每次测试后回滚,使用事务支持(目前@Transactional
注释没有任何帮助)。 支持这种测试所需的最小Spring工具集是什么? 如何使它工作? @Transactional
应该放在其他地方吗?
例:
@Transactional
public class OrderResourceIT extends JerseyTest {
@Override
protected Application configure() {
// config
}
@Override
protected void configureClient(final ClientConfig config) {
// config
}
@Before
public void startUp(){
// database bootstrap programmatically before each test
}
@Test
@Transactional
public void testGetOrders(){
Response response = target("/orders")
.request()
.get();
List<Order> orders = response.readEntity(new GenericType<List<Order>>(){});
// asserts
}
}
执行:
它计划用maven-failsafe-plugin
执行:
Failsafe插件文档建议在容器终止时将容器绑定到pre-integration-test phase
和post-integration-test
pre-integration-test phase
。 如果我的jersey-container-grizzly2-http
容器是以编程方式配置的,如何配置? 示例 :
public class Main {
// Base URI the Grizzly HTTP server will listen on
public static final String BASE_URI = "http://localhost:8080/myapp/";
public static HttpServer startServer() {
// create a resource config that scans for JAX-RS resources and providers
// in com.example.rest package
final ResourceConfig rc = new ResourceConfig().packages("com.example.rest");
// create and start a new instance of grizzly http server
// exposing the Jersey application at BASE_URI
return GrizzlyHttpServerFactory.createHttpServer(URI.create(BASE_URI), rc);
}
public static void main(String[] args) throws IOException {
final HttpServer server = startServer();
System.out.println(String.format("Jersey app started with WADL available at "
+ "%sapplication.wadl\nHit enter to stop it...", BASE_URI));
System.in.read();
server.stop();
}
}
很高兴看到工作示例代码。
我认为您的场景非常适合dbunit测试。 使用dbunits,每个要执行的测试用例都会生成一个内存数据库,并在测试用例执行完成时销毁。 此数据库的数据模型完全取决于您配置的数据集xml。 看看这个: http : //archive.oreilly.com/pub/post/dbunit_made_easy.html
嗨,泽西提供了充足的例子作为球衣示例。 托管其余服务的每个模块都有一组junit测试用例。
该示例可以从泽西下载页面下载。 https://jersey.java.net/download.html
下面给出了确切的链接,将来可能会有所改变。
对于所有可用版本:
http://repo1.maven.org/maven2/org/glassfish/jersey/bundles/jersey-examples
目前的最新版本:
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.