Junit:@Test @Before @After 测试函数的执行次序

在某节课的选择题中看到了这个思考题,觉得还蛮有意义的就记录下来了:
在同一个Java测试类之中多个@Test函数的执行次序并非按照我们书写函数的方式执行的,而且Junit对于@Before和@After的执行次序也是有特定规约的。

首先是@Test函数的执行次序问题:

  • test函数的默认顺序是按照方法名的hashcode()值的排序来决定的,如果hashcode计算值相同,就按照字典序排列。由于hashcode的生成与操作系统相关,所以在不同的操作系统可能会出现不一样的执行次序。
  • 但是Junit对于执行次序的参量提前设置的还有按照方法名称的字典序排列执行,不过这种方法就要在书写名称时要注意一下命名规则了。
  • 还有一个是按照JVM返回的方法名的顺序来执行,每次执行的顺序可能会有所不同

对于Test函数执行顺序的设置可以通过在类名前通过@FixMethodOrder(value)来设置,其中MethodSorters.DEFAULT是默认hashcode顺序,MethodSorters.NAME_ASCENDING是按照字典顺序,MethodSorters.JVM是按照JVM返回次序执行。

然后关于@Before@After的执行次序……
@Before 有点类似于初始化函数,它会对所有的测试方法在开始之前都运行一遍
@BeforeClass 是对于整个当前测试类的初始化,它会在第一个测试函数之前,对整个类都运行且只运行一次
@After 有些类似于空间释放或者垃圾回收的函数作用,它会对每一个test函数在结束测试之后运行一遍
@AfterClass 也是针对于整个类的,在所有测试函数结束后,对整个类运行一次

所以综上所述,Test类的总运行次序为:

@BeforeClass -> {Test 函数的特定运行次序,每个执行(@Before -> @Test -> @After)} -> @AfterClass

总结完毕,我摸鱼去了(

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值