如何配置我的Spring Boot应用程序,以便当我运行单元测试时,它将使用内存数据库,如H2 / Hsql,但是当我运行Spring Boot应用程序时,它将使用生产数据库[Postgre / MysqL]?
解决方法
弹簧型材可用于此。这将是一个具体的方式:
application.properties:
spring.profiles.active: dev
application-dev.properties
spring.jpa.database: MysqL spring.jpa.hibernate.ddl-auto: update spring.datasource.url: jdbc:MysqL://localhost:3306/dbname spring.datasource.username: username spring.datasource.password: password
application-test.properties
spring.jpa.database: Hsql
在pom.xml中同时拥有MysqL和H2驱动程序,如下所示:
<dependency> <groupId>MysqL</groupId> <artifactId>MysqL-connector-java</artifactId> <scope>runtime</scope> </dependency> <dependency> <groupId>org.hsqldb</groupId> <artifactId>hsqldb</artifactId> <scope>test</scope> </dependency>
最后但并非最不重要的是,使用@ActiveProfiles(“test”)注释测试类。