使用Jersey测试框架提供程序inmemory、h2数据库和org为Jersey REST API设计和运行e2e集成测试的正确方法是什么。springframework。jdbc。果心JdbcTemplate?
要求:
测试范围应该是端到端的:从资源开始,通过所有应用程序到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-故障安全-插件
执行:
故障保护插件文档建议在容器终止时,将容器开始绑定到集成前测试阶段和集成后测试阶段。如果我的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();
}
}
最好能看到工作示例代码。
嗨,泽西岛提供了大量的示例作为泽西岛示例。托管rest服务的每个模块都有一组junit测试用例。
该示例可以从jersey下载页面下载。https://jersey.java.net/download.html
下面给出了确切的链接,将来可能会更改。
对于所有可用版本:
http://repo1.maven.org/maven2/org/glassfish/jersey/bundles/jersey-examples
对于当前最新版本:
http://repo1.maven.org/maven2/org/glassfish/jersey/bundles/jersey-examples/2.23.1/jersey-examples-2.23.1-all.zip
我认为您的场景非常适合dbunit测试。使用dbunits,将为每个要执行的测试用例生成内存中的数据库,并在测试用例执行完成时销毁。此数据库的数据模型完全取决于您配置的数据集xml。看看这个:http://archive.oreilly.com/pub/post/dbunit_made_easy.html
我有一个Spring Data JPA存储库,只要不添加Spring Security性依赖项(spring-boot-starter-security)并在存储库上添加相应的方法授权注释,单元测试就可以正常工作。添加后,在运行单元测试时,我会得到一个AuthenticationCredentialsNotFound异常。 如何在单元测试中“验证”对存储库方法的调用?
主要内容:1、JdbcTemplate概念及使用,2、JdbcTemplate 操作数据库(添加),3、JdbcTemplate 操作数据库(修改和删除),4、JdbcTemplate 操作数据库(查询返回某个值),5、JdbcTemplate 操作数据库(查询返回对象),6、JdbcTemplate 操作数据库(查询返回集合),7、JdbcTemplate 操作数据库(批量操作),8、JdbcTemplate 实现批量修改操作1、JdbcTemplate概念及使用 a)Spring 框架对 J
我有一个在mySQL上运行的小型数据库应用程序。 我想使用H2进行测试。 我向build.gradle添加了必要的依赖项: runtimeOnly’com。h2数据库:h2' 然而,我注意到,在完成测试之后,我的mySQL数据库包含测试期间生成的字段,就好像spring没有使用H2一样。 有什么问题吗?
我正在尝试将Spring Boot应用程序的一些集成测试从迁移到。目前,测试使用的是 当测试运行时,被配置为使用与服务器运行时相同的基本URL和(随机选择的)端口。 在我的一个测试中,我登录并保存authorization-response头值,以便在后续的API调用中使用。我试着将它迁移到,就像这样 但是当我像这样创建实例时,它没有配置为使用与应用程序相同的端口。 我尝试使用的依赖注入实例 这确
我用spring boot创建了一个spring网络项目。想了解有关测试的实践。我需要一个内存中的嵌入式数据库,比如hsql或h2,用于具有初始schema.sql的JUnit。在主应用程序上,数据库可以是mysql或oracle 在非spring boot项目中,我们通常会有一个单独的applicationcontext.xml一个由web应用程序引用的应用程序,对于测试,我们会使用applic
问题内容: 如果我使用内存数据库而不是PostgreSQL,则集成测试的运行速度会更快。我使用JPA(休眠),并且我需要一个内存数据库,该数据库很容易切换为使用JPA,易于设置且可靠。它需要相当广泛地支持JPA和Hibernate(或者反之亦然),因为我不想采用我的数据访问代码进行测试。 鉴于上述要求,哪个数据库是最佳选择? 问题答案: 对于 集成测试 ,我现在使用H2(来自HSQLDB的原始作者