JUnit以与文件相同的顺序运行方法

时间:2016-07-08 12:06:21

标签: java junit

嗨我需要在某个方法完成后运行我的一个测试方法。尽管根据How to run test methods in specific order in JUnit4?测试应该是独立的。

另一个黑客就是使用

@FixMethodOrder(MethodSorters.NAME_ASCENDING)

但我想要的是我需要按照与文件相同的顺序运行测试。如果无法完成,那么我只需要使用方法名称分类器

2 个答案:

答案 0 :(得分:2)

从Java 7开始,JDK不再保证在通过反射查找时返回类中的方法的顺序(像JUnit那样的框架必须这样做)。

因此,您的问题的答案是:不,不可能确保测试方法按照在源代码中声明的顺序执行。

正如您所注意到的,在JDK 7 +上的JUnit 4中,唯一可能是随机排序的替代方法是@FixMethodOrder(MethodSorters.NAME_ASCENDING)

答案 1 :(得分:1)

有一个非常关键的问题,为什么你不应该开始发明这样的要求。

单元测试的想法是每个测试......测试你所测试的类的不同方面。相互独立的方面。这是一方面。另一个是:单元测试可以帮助您确定生产中的问题,尽可能快速

含义:突然间,单元测试失败(因为有人在某处改变了某些东西),那么你想尽快找到这个问题的根本原因。任何妨碍您达到目标的事情都会使您的单元测试 对您有价值!

让你更难找到足部原因的事情将是:

  1. 广泛的"外化"设置 - 当你开始为你的测试用例使用(太多)继承时
  2. 您的测试方法之间的复杂关系(例如:您的想法)
  3. 长话短说:单元测试不是以任何特定顺序运行。所以,而不是花费大量时间将JUnit推到一个不想再做的角落......退一步,并重新考虑为什么你认为你需要的东西是那样。