使用放心的spring-boot集成测试

Posted

技术标签:

【中文标题】使用放心的spring-boot集成测试【英文标题】:spring-boot integration testing using rest-assured 【发布时间】:2015-06-16 22:58:17 【问题描述】:

我一直在努力解决在我的测试中启动 H2 db 的问题。这就是测试的注释方式 -

  @SpringApplicationConfiguration(classes = ServiceApplication.class)
@WebAppConfiguration
@IntegrationTest("server.port:8084")
@PropertySource("test:application.properties")
public class testSerivce
//test scenario

使用内存中的 db H2,这就是它在应用程序属性文件中的设置方式 -

dataSource.driverClassName=org.h2.Driver
dataSource.url=jdbc:h2:tcp://localhost:59000/./target/service-db;MODE=Oracle;IGNORECASE=TRUE;IFEXISTS=TRUE
dataSource.username=sa
dataSource.password=sa
dataSource.maxActive=2
dataSource.initialSize=1
dataSource.maxIdle=1

当我右键单击并运行测试时,H2 db 未设置服务,测试无法连接数据库并失败。

而当我使用 maven 配置文件运行测试时,由于你在 teamcity 中运行,一切正常,测试正常,但它运行了所有 10 个测试。

我该怎么办?我被这个问题困扰了很多天。我应该使用哪个注释或如何设置 H2 设置,以便它们也可以与服务一起运行。

【问题讨论】:

使用该服务运行测试时出现什么错误?还可以尝试更改@PropertySource("test:application.properties") -> @PropertySource("application.properties") @NitinArora 现在收到错误此错误 ERROR 7384 --- [nio-8084-exec-1] o.a.c.c.C.[.[.[.[dispatcherServlet] :Servlet.service() 用于 servlet [dispatcherServlet] 的上下文与路径 [/paymentservice ] 抛出异常 [请求处理失败;嵌套异常是 org.springframework.context.NoSuchMessageException:在语言环境“en_US”的代码“application.empty”下找不到消息。] 根本原因 org.springframework.context.NoSuchMessageException:在代码“application.empty”下找不到消息语言环境“en_US”。在 org.springframework.context.support.AbstractMessageSource.getMessage(AbstractMessageSource.java:186) 您正在使用特定于语言环境的消息,并且没有 en_US 消息的文件。在此位置创建文件messages_en.properties 文件/src/main/resources/messages_en.properties 那是用产品代码编写的,我在测试中遇到了问题。作为一个好习惯,我不应该在开发端注入任何代码,而是让我的测试工作。 【参考方案1】:

您在使用 Eclipse 吗? 我以某种方式注意到 src/main/resources/application.properties 会从 Java 构建路径中排除,如果您使用“eclipse:eclipse”maven 目标生成项目。

要解决此问题,您可以添加 src/test/resources/application.properties 或更正 Java 构建路径。

我不知道这种行为是否有意。我猜这是因为 spring-boot-starter-parent 中的资源排除/包含

【讨论】:

我使用的是 intellij 而不是 eclipse。当我通过测试启动服务时会看到该错误...是否可以将其链接到 appcontextConfig 文件中使用的注释 @EnableWebMvc 以使用资源初始化 bean 并使用该 bean? @joshiste..你的回答对我有很大帮助..非常感谢:)

以上是关于使用放心的spring-boot集成测试的主要内容,如果未能解决你的问题,请参考以下文章

基于spring-boot的应用程序的单元+集成测试方案

在 spring-boot 集成测试中使用 H2 数据库的 JDBC 连接错误

如何使用带有 gradle 的多个嵌入式服务器运行 spring-boot 集成测试

Git+Spring-boot+Docker+ Maven +Registry私有仓库 +jenkins 持续集成测试

春天Kafka集成测试听众不工作

在集成测试中覆盖 bean