【发布时间】:2019-05-18 15:18:20
【问题描述】:
类似于Springboot unit test set @Configuration Properties dynamically,但上下文不同。
在我的情况下,我有一个 TestContainer 运行一个自定义 MySQL 数据库,该数据库预填充了大量数据(不使用 SQL 批量加载方法,因为数据是生产的匿名副本,并且通过 SQL 执行它可以启动容器的正常运行时间为 20 分钟 vs 2 分钟)。
到目前为止,我的测试看起来像这样
@RunWith(SpringRunner.class)
@SpringBootTest(
classes = {
Bootstrap.class
}
)
public class ITFakeDB {
@ClassRule
public static final GenericContainer DB = new GenericContainer("devdb")
.withExposedPorts(3306);
@Autowired
private DataSource dataSource;
@Autowired
private Users users;
@Test
public void testDatabaseIsUp() {
assertTrue(DB.getMappedPort(3306) != 0);
}
@Test
public void testUser() {
Optional<User> user = users.findByLoginName("mimi");
assertTrue(users.isPresent());
}
}
我想做的是以某种方式将spring.datasource.url(或者在我的情况下为datasources.schema1.url,因为我做了routing datasource)设置为DB使用的那个
【问题讨论】:
-
DB中获取 URL 并设置为变量的方法是什么?
标签: java spring spring-boot testing