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


我以为是不同方法之间的数据不共享,于是我便在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)
按默认的方法执行,不会改变,但也无法预期.