小编Ste*_* S.的帖子

如何将 SpringBootTest 的本地端口转发到测试配置

我目前正在努力解决 SpringBootTest 实例的服务器端口注入问题。我编写了一个测试配置类,我想在其中访问此端口。

测试配置类:

@Target(AnnotationTarget.CLASS, AnnotationTarget.FILE)
@Retention(AnnotationRetention.RUNTIME)
@Import(value = [TestTemplateConfig::class])
annotation class TestAnnotation

@Configuration
open class TestTemplateConfig {
    @Value("\${server.port}")
    private var localPort: Int? = null

    @Bean
    open fun foo() = Foo(localPort)
}
Run Code Online (Sandbox Code Playgroud)

测试看起来像这样:

@SpringBootJunit5Test
@TestAnnotation
@EnableTestCouchbase
@SpringBootTest(webEnvironment = SpringBootTest.WebEnvironment.RANDOM_PORT)
class MyIntegrationTest {
    @LocalServerPort
    var port: Int = 0

    @Autowired
    private lateinit var foo: Foo

    ...
}
Run Code Online (Sandbox Code Playgroud)

现在的问题是,我总是在配置类中收到端口的零值。因为我没有得到 null,这听起来像是它正在努力获取端口,但是错误的端口(我认为零是在 spring 中为随机端口定义的)。到目前为止,MyIntegrationTest 类中服务器端口的评估工作正常。

有什么想法可以解决这个问题吗?

谢谢

kotlin spring-boot-test spring-boot-configuration

5
推荐指数
2
解决办法
4058
查看次数