Mat*_*s M 3 spring-boot spring-boot-test
我正在使用我的SpringBootTest. 我可以使用注释检索测试类中的随机端口@LocalServerPort:
@SpringBootTest(webEnvironment = SpringBootTest.WebEnvironment.RANDOM_PORT)
@ContextConfiguration(classes = {MyTest.LocalConfig.class})
public class MyTest {
@LocalServerPort
private Integer port;
Run Code Online (Sandbox Code Playgroud)
不幸的是,我无法检索类中的随机端口Configuration,我想在类中使用随机端口创建测试 bean:
@TestConfiguration
public static class LocalConfig {
@Bean
public MyBean myBean(@Value("${local.server.port}") int port) {
Run Code Online (Sandbox Code Playgroud)
这里我得到这个错误:
Caused by: java.lang.IllegalArgumentException: Could not resolve placeholder
'local.server.port' in value "${local.server.port}"
Run Code Online (Sandbox Code Playgroud)
感谢knoobie我找到了这个解决方案:
@Lazy
@TestConfiguration
public static class LocalConfig {
@Bean
public MyBean myBean(@Value("${local.server.port}") int port) {
Run Code Online (Sandbox Code Playgroud)
如果使用,则可以访问类中的@Lazy值。local.server.portConfiguration
Lazy Configuration 类中的 Bean 最后将被实例化,因此端口在该阶段可用。
不幸的是,不可能将注释与覆盖 bean 结合使用,因为@Primary带注释的 bean 是在早期阶段实例化的。@Lazy@Primary
| 归档时间: |
|
| 查看次数: |
2173 次 |
| 最近记录: |