【问题标题】:SpringBoot test configurationSpring Boot 测试配置
【发布时间】:2018-11-04 19:48:42
【问题描述】:

我在2.1.0版本开始学习Spring Boot,做了一个简单的应用Controller->Service->Repository->Database(H2)。非常非常简单的应用程序,只需从 Spring Boot 开始。

我已经读过,在那个框架中,我可以在 src/resources 下添加一个文件 data.sql 我可以在其中定义插入/更新等,然后运行我的将存储数据的应用程序。一切正常,但是当我想为我的服务编写测试时,只是为了检查我的存储库是否正常(我为了学习目的而测试数据库)我看到当我在我的数据库中运行我的测试时,已经有来自 data.sql 的值,但我在 test 文件夹下没有 data.sql 。它在 src 下。

也许有人知道,如何配置项目不从 src/resources 获取这个 data.sql?可能吗?也许我必须添加更多注释?

**** 编辑 ****

This is my repo:

【问题讨论】:

  • 您确定 db 存在于您的应用程序之外,并且当您运行测试时它只是从数据库中获取数据?或者它是内存数据库?如果你不想使用数据库中的数据,你应该模拟你的存储库
  • 我使用内存数据库。为什么当我运行我的 ServiceTest SpringBoot 扫描我的应用程序结构时,即使 ServiceTest 在 test//ServiceTest 下它也需要在 src/resources 下的 data.sql?
  • 而且我确信它会从我的内存数据库中获取数据,因为在 data.sql 中我有 2 次插入,而在我的测试中,当我测试例如“getAll()”时,我期望 0结果,但我得到了 2。
  • 顺便问一下你在测试中是怎么使用repository的?
  • 我链接了我的repo,你可以查看。

标签: java spring spring-boot spring-data-jpa spring-boot-test


【解决方案1】:

您可以在test/resources 中创建测试application-test.properties 并像这样在测试中覆盖:

@RunWith(SpringRunner.class)
@SpringApplicationConfiguration(classes = ExampleApplication.class)
@TestPropertySource(locations="classpath:test.properties")
public class ExampleApplicationTests {

}

然后在您新创建的application-test.properties 文件块中运行您的脚本:

spring.datasource.initialization-mode=never

【讨论】:

    猜你喜欢
    • 2021-02-16
    • 1970-01-01
    • 2017-01-25
    • 2015-03-21
    • 2018-11-02
    • 2019-01-20
    • 2018-12-03
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多