繁体   English   中英

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

[英]JUnit run the methods in the same order as in file

嗨我需要在某些方法完成后运行我的一个测试方法。 即使测试应该是独立的, 如何在JUnit4中按特定顺序运行测试方法?

另一个黑客就是使用它

@FixMethodOrder(MethodSorters.NAME_ASCENDING)

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

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

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

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

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

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

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

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

  1. 广泛的“外部化”设置 - 当您开始为您的测试用例使用(太多)继承时
  2. 你的测试方法之间的复杂关系(比如:你的想法)

长话短说:单元测试不是以任何特定顺序运行。 因此,不要花费大量时间将JUnit推到一个不想成为的角落......退一步,并重新考虑为什么你认为你需要这样的东西。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM