2017-08-12 116 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 
相关问题