如何自动从JUnit 4迁移到JUnit 5?

jtw3ybtb  于 2022-11-11  发布在  其他
关注(0)|答案(2)|浏览(145)

this question from JUnit 3 to JUnit 4的精神下,是否有任何正则表达式列表可以有效地从junit 4 API迁移到junit 5 API,而不管代码大小?

5rgfhyps

5rgfhyps1#

眼下明面上并不伟大,但在进步:

  • IntelliJ:将大多数注解迁移到JUnit 5版本。但是,如果您的测试文件包含@Rule(例如,ExpectedException),则不会执行任何操作(从v2018.2开始)。
  • 易出错:包含内置的重构,可以自动将各种JUnit 4异常测试习惯用法(try/fail/catch/assert、ExpectedException s、@Test(expected = …))迁移到assertThrows,从而完美地增强IntelliJ。

我建议采取以下步骤:
1.将JUnit 5工件添加到测试依赖项中。

  1. Install易出错编译器
  • Configure生成一个修补程序以迁移到assertThrows,并启用以下检查(Maven配置示例如下):
  • 尝试失败重构,
  • 预期异常重构,
  • 测试异常重构。
  • 使用IntelliJ内置的refactorings将JUnit 4注解和方法迁移到JUnit 5对应项。

除了ExpectedException之外,我不知道有任何工具可以帮助自动迁移Parameterized测试或规则。
以下是一个“易出错”配置示例:

<build>
  <plugins>
    <plugin>
      <artifactId>maven-compiler-plugin</artifactId>
      <version>3.8.0</version>
      <configuration>
        <compilerId>javac-with-errorprone</compilerId>
        <showWarnings>true</showWarnings>
        <forceJavacCompilerUse>true</forceJavacCompilerUse>
        <source>${java.compiler.source}</source>
        <target>${java.compiler.target}</target>
        <compilerArgs>        
          <arg>-XepPatchChecks:TryFailRefactoring,ExpectedExceptionRefactoring,TestExceptionRefactoring</arg>
          <arg>-XepPatchLocation:${project.basedir}</arg>
        </compilerArgs>
      </configuration>
      <dependencies>
        <dependency>
          <groupId>org.codehaus.plexus</groupId>
          <artifactId>plexus-compiler-javac-errorprone</artifactId>
          <version>2.8.3</version>
        </dependency>
        <dependency>
          <groupId>com.google.errorprone</groupId>
          <artifactId>error_prone_core</artifactId>
          <version>2.3.2</version>
        </dependency>
      </dependencies>
    </plugin>
  </plugins>
</build>
wribegjk

wribegjk2#

使用openrewrite,您可以执行migrate automagically
刚跑:

mvn org.openrewrite.maven:rewrite-maven-plugin:4.36.0:run -Drewrite.recipeArtifactCoordinates=org.openrewrite.recipe:rewrite-testing-frameworks:1.28.0 -Drewrite.activeRecipes=org.openrewrite.java.testing.junit5.JUnit5BestPractices

相关问题