maven-2 - 使用 JUnit 的 maven2 中的类加载问题

标签 maven-2 junit

我有一个使用 maven2 构建的项目,并针对代码运行一系列 JUnit 测试用例。到目前为止,这一切都运行良好,我现在有 2 个测试,必须按一定的顺序运行才能正常工作,比方说 TestA 和 Test(A 然后 B)。不幸的是,maven2 不理解这一点,所以我正在寻找一种方法来说服它需要按此顺序运行测试。

问题是我在 TestB 中设置一些最终静态字段,但我是从 TestA 执行此操作,TestA 本身使用这些字段,并且测试的成功执行取决于将这些字段设置为新值(绝对没有办法解决这个问题,否则我早就走了那条路)。因此,TestA 必须首先加载,并且当尝试访问 TestB 时,它当然会导致 TestB 被加载。但是,maven2 决定先运行 TestB,然后运行 ​​TestA,这意味着这些最终字段已设置且无法更改。

所以我正在寻找一种方法来指定测试执行的顺序(每次先 A 然后 B),或者一种轻松地导致 TestB 被 JUnit 使用的任何类加载器重新加载的方法。

编辑 - 另一个选项可能是像旧的 JUnit GUI 工具那样的选项,它会导致每次测试重新加载所有类。我找了又找,在maven junit插件中没有找到这样的标志,如果存在这样的东西,那么也可以。

最佳答案

Fork mode可以强制每个测试在其自己的 JVM 中运行,以便为每个测试重新加载每个类。

  <plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-surefire-plugin</artifactId>
    <configuration>
      <forkMode>pertest</forkMode>
    </configuration>
  </plugin>

关于maven-2 - 使用 JUnit 的 maven2 中的类加载问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1331633/

相关文章:

plugins - 如何在一个阶段内执行多个maven插件并设置它们各自的执行顺序?

java - 如何摆脱 Maven 快照版本

java - Maven : Missing artifact com. sun :tools:jar:1. 6.0 POM.xml 编译时异常

spring-boot - @SpringBootTest 注解导致 StackOverflowError

android - 如何在命令行上使用gradlew运行特定的测试?

sql - Maven : PL/SQL script with sql-maven-plugin throws error PLS-00103

java - 禁用 Maven 警告消息 - "Selected war files include a WEB-INF/web.xml which will be ignored"

java - 模拟具有通用(?扩展集合)返回类型的方法时遇到问题

java - 具有多个@Test 方法的 Junit 测试类

java - 每个测试套件并行测试设置/拆卸一次?测试组织