对于应用程序的集成测试,根据我们想要测试的内容,我们有2个独立的spring配置文件,一个使用H2作为嵌入式数据库,另一个使用嵌入式数据库作为数据库。 每个配置文件分别称为H2和MYSQL,对于我们的测试,我们有一个名为WithJsonItResources的公共基类,我们希望能够在每次测试执行后删除数据库,这就是目前的样子:
@DirtiesContext(classMode = DirtiesContext.ClassMode.BEFORE_EACH_TEST_METHOD)
@Sql(executionPhase = Sql.ExecutionPhase.AFTER_TEST_METHOD, statements = "DROP DATABASE mytestdb")
public abstract class WithJsonItResources extends WithJsonTestResources {
protected WithJsonItResources(Class resourcesForClass) {
super(resourcesForClass);
}
}
如何添加某种验证或其他任何内容,以便如果配置文件为H2,则运行:
@Sql(executionPhase = Sql.ExecutionPhase.AFTER_TEST_METHOD, statements = "DROP ALL OBJECTS DELETE")
如果是它运行的MYSQL配置文件:
@Sql(executionPhase = Sql.ExecutionPhase.AFTER_TEST_METHOD, statements = "DROP DATABASE mytestdb")
谢谢!
答案 0 :(得分:0)
您可以使用 @Profile 或 @IfProfileValue 来决定是启用H2还是MYSQL。
也不要对该语句进行硬编码,而是从application.properties中读取它并使用 @Value 根据活动配置文件解析它
文档: http://docs.spring.io/spring/docs/3.2.x/spring-framework-reference/html/testing.html