在 Spring Boot 测试之前初始化数据库

2022-09-01 20:06:28

我正在使用JUnit来测试我的应用程序,只要数据库在测试之前已经初始化(用作Web应用程序运行),一切正常。但是,如果数据库为空,则应用程序在测试之前似乎不会初始化任何模型或实体。有没有办法让我做到这一点?我假设该类将在测试之前运行并初始化实体。有没有办法做到这一点,或者我使用了错误的方法?gradle bootRunApplicationRunner

我的文件是这样的:application.properties

server.port=8090
server.ssl.key-store=classpath:keystore.jks
server.ssl.key-store-password=123456
server.ssl.key-password 123456
spring.jpa.database-platform=org.hibernate.dialect.MySQLDialect
spring.jpa.hibernate.ddl-auto=create
spring.jpa.hibernate.naming-strategy:org.hibernate.cfg.ImprovedNamingStrategy
application.logger.org.springframework=INFO

我的数据库使用连接存储在 中。并且我设置了在启动时运行向数据库添加几行。/src/main/java/application/persistence/DbConfig.javaDriverManagerDataSourceApplicationRunner

编辑:

我还应该补充一点,这些是我在JUnit测试文件上使用的注释:

@RunWith(SpringJUnit4ClassRunner.class)
@WebAppConfiguration
@ContextConfiguration(classes={
    AdeyTrackApplication.class, 
    SecurityConfig.class, 
    WebConfig.class,
    AuthorizationController.class
    })

答案 1

如果您不想从 JUnit 钩子显式执行,则有多种选择。@Before

  1. 使用Spring Boot的JDBC初始化功能,您可以在其中放置或放入文件夹,以便仅在测试期间拾取它。schema.sqldata.sqlsrc/test/resources
  2. 使用Spring的@Sql注释

答案 2

您可以使用@Sql注释来填充数据库,例如^

@Sql(scripts = "classpath:db/populateDB.sql")

推荐