使用JUnit 5 执行条件和并发测试

JUnit 和Spring 5:Spring 5 全面接纳了函数式范例,并支持JUnit 5 及其新的函数式测试风格。还提供了对JUnit 4 的向后兼容性,以确保不会破坏旧代码。

Spring 5 的测试套件通过多种方式得到了增强,但最明显的是它对JUnit 5 的支持。现在可以在您的单元测试中利用Java 8 中提供的函数式编程特性。以下代码演示了这一支持:

JUnit 5 全面接纳了Java 8 流和lambda 表达式

@Test
void givenStreamOfInts_SumShouldBeMoreThanFive() {
	assertTrue(Stream.of(20, 40, 50)
	.stream()
	.mapToInt(i -> i)
	.sum() > 110, () -> "Total should be more than 100");
}

迁移到JUnit 5:如果您对升级到JUnit 5 持观望态度,Steve Perry 的分两部分的深入剖析教程将说服您冒险尝试。

Spring 5 继承了JUnit 5 在Spring TestContext Framework 内实现多个扩展API 的灵活性。举例而言,开发人员可以使用JUnit 5 的条件测试执行注解@EnabledIf 和@DisabledIf 来自动计算一个SpEL (Spring Expression Language) 表达式,并适当地启用或禁用测试。借助这些注解,Spring 5支持以前很难实现的复杂的条件测试方案。Spring TextContext Framework 现在能够并发执行测试。

使用Spring WebFlux 执行集成测试

Spring Test 现在包含一个WebTestClient,后者支持对Spring WebFlux 服务器端点执行集成测试。WebTestClient 使用模拟请求和响应来避免耗尽服务器资源,并能直接绑定到WebFlux 服务器基础架构。

WebTestClient 可绑定到真实的服务器,或者使用控制器或函数。在下面的代码中,WebTestClient 被绑定到localhost:

绑定到localhost 的WebTestClient

WebTestClient testClient = WebTestClient
	.bindToServer()
	.baseUrl("http://localhost:8080")
	.build();

将WebTestClient 绑定到RouterFunction

RouterFunction bookRouter = RouterFunctions.route(
	RequestPredicates.GET("/books"),
	request -> ServerResponse.ok().build()
);
WebTestClient
	.bindToRouterFunction(bookRouter)
	.build().get().uri("/books")
	.exchange()
	.expectStatus().isOk()
	.expectBody().isEmpty();

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值