2016-11-24 50 views
0
@RunWith(SpringRunner.class) 
@SpringBootTest(classes=Application.class) 
public class TaskProviderTest { 
} 

我使用H2數據庫屬性文件配置不同的H2測試

spring.datasource.url=jdbc:h2:mem:testdb;MODE=PostgreSQL 
spring.datasource.platform=h2 
spring.jpa.hibernate.ddl-auto=none 
spring.datasource.continue-on-error=true 
spring.jpa.generate-ddl=true 
spring.jpa.hibernate.ddl-auto=create-drop 

而且我使用schema.sql文件和data.sql文件的單元測試春季啓動不同data.sql文件。這兩個腳本都在測試啓動時執行。

有沒有辦法針對不同的Junit測試用例使用不同的data.sql文件?

+0

你是如何加載data.sql目前?我的意思是你可以添加代碼嗎? – developer

+0

它通過彈簧啓動以某種方式自動添加 – user12384512

回答

1

嘗試使用EmbeddedDataSource並從代碼中的方法進行配置。 下面的代碼演示瞭如何用2個SQL腳本

@Bean 
public DataSource dataSource() { 
    final EmbeddedDatabaseBuilder builder = new EmbeddedDatabaseBuilder(); 

    return builder 
      .setType(EmbeddedDatabaseType.HSQL) 
      .addScript("sql/create-db.sql") 
      .addScript("sql/fill-db.sql") 
      .build(); 
} 
1

你可以使用Spring的EmbeddedDatabaseBuilder構建數據庫的單元測試的方法setUp(),對於不同的測試提供不同data.sql腳本創建數據源。

例子:

public EmbeddedDatabase database(String dataScript) { 
    return new EmbeddedDatabaseBuilder(). 
      setType(H2). 
      addScript("schema.sql"). 
      addScript(dataScript). 
      build(); 
} 

參考:

http://docs.spring.io/spring/docs/current/javadoc-api/org/springframework/jdbc/datasource/embedded/EmbeddedDatabaseBuilder.html