【问题标题】:How to make a Junit test class run last when running test package [duplicate]运行测试包时如何使Junit测试类最后运行[重复]
【发布时间】:2016-07-28 04:30:42
【问题描述】:

我在我的项目中使用 Junit 进行单元测试。当我运行包含所有测试类的包或在执行 maven 安装时运行这些测试类时,我需要执行排序 junit 测试类或使它们中的一个最后运行。谢谢你的帮助。

【问题讨论】:

  • 这听起来有点可疑。您不应该编写相互依赖的单元测试。它们应该是可以单独运行的不同测试,在这种情况下它们运行的​​顺序无关紧要。如果您的测试有先决条件,请使用 setup 方法。
  • 除了@BenThurley 上面所说的之外,最好解释一下/为什么/你想最后运行一个特定的测试,我们可以帮助你解决这个问题
  • 实际上让单元测试相互依赖是不好的,但我更喜欢在最后执行较慢的测试,最重要的一点是尽快失败

标签: java unit-testing junit4


【解决方案1】:

根据设计,JUnit 不指定测试方法调用的执行顺序。到目前为止,这些方法只是按照反射 API 返回的顺序调用的。但是,使用 JVM 顺序是不明智的,因为 Java 平台没有指定任何特定的顺序,实际上 JDK 7 会返回或多或少的随机顺序。当然,编写良好的测试代码不会假定任何顺序,但有些会假定,而且在某些平台上,可预测的故障比随机故障要好。

JUnit 4.11 默认使用确定性但不可预测的顺序 (MethodSorters.DEFAULT)。要更改测试执行顺序,只需使用 @FixMethodOrder 注释您的测试类并指定可用的 MethodSorters 之一:

  1. @FixMethodOrder(MethodSorters.JVM):按照 JVM 返回的顺序保留测试方法。此顺序可能因运行而异。

  2. @FixMethodOrder(MethodSorters.NAME_ASCENDING):按方法名称按字典顺序对测试方法进行排序。

【讨论】:

    【解决方案2】:

    单元测试必须是Unit。如果您正在尝试进行某种相互依赖的单元测试,那么这是一个坏主意。

    虽然您可以使用@BeforeClass@AfterClass 注解分别设置测试或清理代码的配置。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2016-02-15
      • 2011-01-30
      • 2018-12-20
      • 2017-08-30
      • 2017-03-28
      • 2011-11-12
      • 2013-08-23
      相关资源
      最近更新 更多