JUnit 在 Maven 中从 JDK 1.6 升级到 JDK 1.8 时失败,但它在 Eclipse 中有效

JUnit are failing when upgraded from JDK 1.6 to JDK 1.8 in maven, but its works in eclipse

我在项目中使用 JUnit 进行代码覆盖。对于数据库,我使用 dbunit 就像模拟数据库一样。当我从 Eclipse 运行 宁 JUnit UI 时,它通过了,但是当 运行 通过 maven 时它失败了。

以上设置在 JDK 1.6.25 中 运行 可以正常使用 Maven,但在升级到 1.8.51 时开始失败。我已经更新了 Maven 编译器插件,它不起作用。我使用以下版本,junit - 4.7 2.dbunit - 2.4.8 hsqldb - 2.0.0 maven - 2.2.1.

             Issue:

-> 运行 在 JAVA 1.6 中正常的所有测试用例在迁移到 JDK 1.8.51 时开始失败。 -> 因此,我们面临构建失败问题以及代码覆盖率降低问题。

           Root Cause:

-> JUnit 使用 Java 反射从 Test classes 中获取测试方法。在 JAVA 1.6 中,测试方法返回的顺序与源文件中的声明相同。 -> 但是从JAVA 7 开始,JVM 返回的方法顺序与源文件不一样,它将运行domly 返回。 -> 由于我们的测试用例相互依赖,因此由于顺序更改它开始失败。 对于下面的示例,测试用例使用相同的数据(模拟数据库)执行, -> 添加操作测试用例() -> EditOperationTestCase() -> DeleteOperationTestCase() 如果删除 运行 首先由于 JVM 运行dom 命令,添加和编辑数据将不可用,它将失败。

           Solution :

-> 我试图在 JUnit 和 Sure Fire 插件中找到选项来保持与源文件相同的顺序,但我在那里找不到可行性。 -> 我已经确定了 class,它将 returns JUnit 库中的执行顺序,并相应地将其覆盖为 运行 它的源文件顺序。 -> 截至目前,我已将此注释包装器添加到失败的 classes,现在构建 运行ning 成功。

Link 用于包装 class: https://somethingididnotknow.wordpress.com/2014/03/07/run-junit-tests-in-order/