关于Junit4中test测试执行的顺序

博客探讨了在进行软件构造实验时遇到的测试用例执行顺序问题。在使用JUnit时,发现测试方法并非按预期顺序执行,研究后了解到JUnit默认不指定测试方法执行顺序。为了解决这个问题,提出了两种解决方案:创建多个测试类或使用@FixMethodOrder注解来控制执行顺序。还介绍了JUnit中三种控制测试顺序的方法,并强调了测试应独立且结果不依赖于前次测试。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

在做软件构造的lab1时,编写P3的测试用例时我遇到了这么一个问题,即在检测加边是否正常工作时,图中并没有我在检测加点的程序中添加的人.

addVertex正常工作,addEdge报错
错误信息不存在此人

我以为是不同方法之间的数据不共享,于是我便在addEdge中重复了一遍加点操作,发现这次addEdge正常通过,但addVertex却开始报错:图中出现重复人名.

这下知道了,同一个测试类中的私有数据还是共通的,那么便是顺序问题了,说明它并不是起初我预想的按顺序执行,而是有着自己的规则.

查阅资料发现 :一般实践认为,自动化测试应能够独立运行且无特定顺序,并且测试结果不应依赖于先前测试的结果。

                        所以按照设计,Junit不指定test方法的执行顺序。

                        到目前为止,这些test方法仍是简单地根据反射API返回的顺序来执行。从4.11版本开始,JUnit将会默认使用一个可确定,但是不可预测的顺序(MethodSorters.DEFAULT)。

我的解决方法:1.在一个测试模块下创建多个类分别测试所用方法,使得顺序不在影响.

                       2.

其实就是在测试类添加注解:

@FixMethodOrder(MethodSorters.NAME_ASCENDING)

它会使得测试用例按首字母顺序执行,通过修改方法的名字,我们就能 使得TEST用例按我们想要的顺序执行了

 额外补充:

JUnit测试控制@Test执行顺序的三种方法
1.@FixMethodOrder(MethodSorters.JVM)
按JVM返回顺序 执行@Test,可能改变.

2.@FixMethodOrder(MethodSorters.NAME_ASCENDING) (推荐)
按方法名字顺序执行@Test

3.@FixMethodOrder(MethodSorters.DEFAULT)
按默认的方法执行,不会改变,但也无法预期.
 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值