我不希望Spring自动进行网络客户端测试。我的应用程序在opeshift上运行。除非它在同一模块中找到@spring引导配置,否则Spring引导测试无法正常工作。我正在使用其他模块进行集成测试。
文档不够清晰,无法区分webfluxtest与springboottest之间的区别
答案 0 :(得分:1)
据我了解,您希望进行基于Spring WebFlux的集成测试,而不会通过测试初始化应用程序的Spring Context。
在这种情况下,您可以使用WebTestClient
来实现。
要测试的客户端可以绑定到真实服务器或与特定服务器一起使用 控制器或功能。
在IntegrationTest文件中,您可以构建客户端并测试期望的输出,如下所示:
@Test
public void testWebTestClientWithServerURL() {
WebTestClient.bindToServer()
.baseUrl("http://localhost:" + port)
.build()
.get()
.uri("/resource")
.exchange()
.expectStatus()
.isOk()
.expectBody();
}
答案 1 :(得分:0)
这是我如何在类路径中没有SpringBoot的情况下针对webflux应用进行测试的方法:
@RunWith(SpringRunner::class)
@ContextConfiguration(classes = [AppConfig::class])
class WebApiTest {
@Autowired
lateinit var context: ApplicationContext
lateinit var testClient: WebTestClient
lateinit var client: WebClient
@Before
fun setUp() {
testClient = WebTestClient.bindToApplicationContext(context).build()
client = WebClient.builder()
.clientConnector(HttpHandlerConnector(WebHttpHandlerBuilder.applicationContext(context).build()))
.build()
}
}
代码是用Kotlin编写的,但是可能每个人都知道如何用Java重写代码。