@ActiveProfiles("test")
@Sql({"/test-schema.sql","/test-user-data.sql"})
public class FooControllerWebIntegrationTest {...}
没关系,但我发现在执行每个测试方法时,它会反复加载测试数据。见下文:
2015-12-30 15:58:18.398 INFO 4739 --- [ main] o.s.jdbc.datasource.init.ScriptUtils : Executing SQL script from class path resource [test-schema.sql]
2015-12-30 15:58:18.403 INFO 4739 --- [ main] o.s.jdbc.datasource.init.ScriptUtils : Executed SQL script from class path resource [test-schema.sql] in 5 ms.
2015-12-30 15:58:18.403 INFO 4739 --- [ main] o.s.jdbc.datasource.init.ScriptUtils : Executing SQL script from class path resource [test-user-data.sql]
2015-12-30 15:58:18.412 INFO 4739 --- [ main] o.s.jdbc.datasource.init.ScriptUtils : Executed SQL script from class path resource [test-user-data.sql] in 8 ms.
但是我想在测试整个类时只加载一次,甚至在执行mvn package
时加载一次,我怎么能达到这个目的呢?
答案 0 :(得分:1)
为每个测试加载架构和数据有什么问题?
如果您的问题是为每个测试重新创建了架构,那么您可以在创建数据库对象之前始终清理架构。
如果您的问题是先前测试创建的数据不再可用于其他测试,那么您的测试存在问题,因为您的测试不应取决于其他测试。每个测试都应准备测试数据,执行测试并单独验证结果。
答案 1 :(得分:0)
答案 2 :(得分:0)
这听起来像Liquibase或Flyway等数据库迁移工具的工作。 Spring Boot has integration for both。