你真的需要 @DirtiesContext?

测试又随机挂了,该怎么办?加上 @DirtiesContext 试试。真棒,修好了。

WAIT! WAIT! WAIT! 为什么加 @DirtiesContext 就修好,有没有什么副作用?

@DirtiesContext is a spring test annotation which is used to indicate that the application context cached should be removed and reloaded after each test run. The application context removed will also be closed.

如上面所述,@DirtiesContext 会导致application context不被缓存,也就是说,有可能会对测试运行的速度有影响。官方文档介绍@DirtiesContext

如果在测试类上,使用@DirtiesContext注解,待整个测试类的所有测试执行结束后,该测试的application context会被关闭,同时缓存会清除。@DirtiesContext分为method-levelclass-level

  • method-level只有当@DirtiesContext注解设置在test method上的才会生效,methodMode有两种配置:BEFORE_METHODAFTER_METHOD,默认是AFTER_METHOD
  • class-level只有当@DirtiesContext注解设置在test class上的才会生效,classMode有四种配置:BEFORE_CLASSBEFORE_EACH_TEST_METHODAFTER_EACH_TEST_METHODAFTER_CLASS,默认是AFTER_CLASS
  • 生命周期:图片描述

写在最后

虽然使用@DirtiesContext,可以保证每个test class的执行上下文的独立性、隔离性,但是也会有让测试运行速度变慢的副作用。所以在使用@DirtiesContext前,弄清楚你是否真的需要使用它。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值