我有一个测试用例,我启动整个应用程序上下文,我想将数据库换成内存数据库并禁用Flyway。
我的主应用程序配置位于项目的根目录中,名为config
。我的测试配置位于src/test/resources
。我已尝试将测试资源文件命名为application.yml
和application-test.yml
。
我的测试如下:
@RunWith(SpringRunner.class)
@SpringBootTest(webEnvironment = WebEnvironment.RANDOM_PORT)
@TestPropertySource(locations="classpath:application-test.yml")
public class SmokeTest {
@LocalServerPort
private int port;
@Value("${api.path}")
private String path;
@Value("${spring.datasource.url}")
private String url;
@Autowired
private TestRestTemplate restTemplate;
@Before
public void test() {
System.out.println(url);
}
}
无论我做什么,数据源的URL 总是来自config
文件夹中主应用程序配置的URL。我的主要配置有这个:
flyway:
enabled: true
spring:
datasource:
url: jdbc:postgresql://localhost:5432/datasource
username: user
password: password
这是测试配置:
flyway:
enabled: false
spring:
datasource:
url: jdbc:h2:mem:db;DB_CLOSE_DELAY=-1;DB_CLOSE_ON_EXIT=FALSE
username: sa
password: sa
这让我疯了,我觉得我错过了一些微不足道的事情。