2017-08-12 76 views
0

我想讓Spring Boot使用應用程序數據庫旁邊的MySQL測試數據庫進行集成測試。目前,它自動使用H2數據庫,因爲我在Gradle中添加了H2依賴項。如何告訴Spring Boot使用另一個數據庫進行測試?

這個測試例如現在運行使用H2數據庫,我寧願它使用物理輔助數據庫。

import org.junit.Test; 
import org.junit.runner.RunWith; 
import org.observer.media.model.MediaGroup; 
import org.observer.media.repository.MediaGroupRepository; 
import org.springframework.beans.factory.annotation.Autowired; 
import org.springframework.boot.test.context.SpringBootTest; 
import org.springframework.test.context.junit4.SpringRunner; 

import javax.persistence.EntityManager; 
import javax.persistence.PersistenceContext; 

import static org.assertj.core.api.Assertions.assertThat; 

@RunWith(SpringRunner.class) 
@SpringBootTest 
public class MediaGroupServiceTest { 

    @Autowired 
    private MediaGroupService mediaGroupService; 
    @Autowired 
    private MediaGroupRepository mediaGroupRepository; 

    @PersistenceContext 
    private EntityManager entityManager; 

    private MediaGroup mediaGroup = new MediaGroup("name", "ceo", "owner"); 

    @Test 
    public void save() { 
     MediaGroup entity = mediaGroupService.saveNew(mediaGroup); 

     assertThat(mediaGroupRepository.findByName(mediaGroup.getName())).isEqualTo(entity); 
    } 
} 
+3

可能複製https://stackoverflow.com/questions/28007686/how-can-i-provide-different-database-configurations-with-spring-boot的 – Akash

回答

0

我在/ src/main/java/resources中有application.properties和主應用程序的數據源配置。

我將application-test.properties添加到/ src/test/java /資源並將數據源配置添加到數據庫進行測試。另外,我在應該使用該數據庫的測試中添加了@ActiveProfiles("test")。請注意,Spring使用application-test.properties中的單詞test和註釋來配置自己。因此,Spring會「覆蓋」application.properties的配置。

application.properties:

spring.datasource.url=jdbc:mysql://localhost:3306/database 
spring.datasource.username=user 
spring.datasource.password=secret 
spring.datasource.driverClassName=com.mysql.jdbc.Driver 

application-test.properties:

spring.datasource.url=jdbc:mysql://localhost:3306/database_test 
spring.datasource.username=user 
spring.datasource.password=secret 
spring.datasource.driver-class-name=com.mysql.jdbc.Driver 
相關問題