java 如何为Assertions.assertThrows创建动态模板?

sd2nnvve  于 2023-05-05  发布在  Java
关注(0)|答案(1)|浏览(131)

我将大约1000个JUnit测试转换为

@Test(expected=SomeException.class)
public void testIt() throws SomeException {
  doSomeStuff();
}

JUnit Jupiter API

@Test
void testIt() {
  Assertions.assertThrows(SomeException.class, () -> {
    doSomeStuff();    
  });
}

在Intellij中,我知道有一些“环绕”魔法,活模板,或者其他可以使这个过程更加自动化的东西?
我总是可以写一个脚本或其他东西,但我认为可能有一种方法可以利用Intellij的内置功能来使其更容易。
有什么想法吗

wbgh16ku

wbgh16ku1#

将多个Junit 4测试迁移到Junit 5的一种方法是OpenRewrite
它将为Migrating Junit4 to Junit5等常见任务提供多个预定义的配方。
如果你有一个没有spring的maven项目,你可以将以下内容添加到你的pom.xml中。

<build>
  <plugins>
    <plugin>
      <groupId>org.openrewrite.maven</groupId>
      <artifactId>rewrite-maven-plugin</artifactId>
      <version>4.44.0</version>
      <configuration>
        <activeRecipes>
            <recipe>org.openrewrite.java.testing.junit5.JUnit5BestPractices</recipe>
        </activeRecipes>
      </configuration>
      <dependencies>
        <dependency>
          <groupId>org.openrewrite.recipe</groupId>
          <artifactId>rewrite-testing-frameworks</artifactId>
          <version>1.36.0</version>
        </dependency>
      </dependencies>
    </plugin>
  </plugins>
</build>

快速解释:

<activeRecipes>
   <recipe>org.openrewrite.java.testing.junit5.JUnit5BestPractices</recipe>
</activeRecipes>

这一部分激活了重写junit recipe,它位于依赖项org.openrewrite.recipe:rewrite-testing-frameworks中。
如果你使用的是Spring或Spring-Boot,你将需要激活的recipe org.openrewrite.java.spring.boot2.SpringBoot2JUnit4to5Migration和以下依赖项。

<dependency>
  <groupId>org.openrewrite.recipe</groupId>
  <artifactId>rewrite-spring</artifactId>
  <version>4.35.0</version>
</dependency>

如果您正在使用Gradle,请查看offical documenation
通过mvn rewrite:dryRun,您可以在.patch文件中看到结果。
通过mvn rewrite:run将完成迁移。如果你有一个VCS,你可以在不做试运行的情况下运行,因为你可以在VCS的diff工具中看到差异。

相关问题