java - 快速将assertXY语句从JUnit4迁移到Junit5?

标签 java unit-testing junit junit4 junit5

我们的项目中有数千个使用 JUnit4 构建的单元测试。目前,我们正在迁移到 JUnit5。

但是,assertXY 语句的不同方法签名(从 JUnit 4 更改为 JUnit 5)如果我们以手动方式迁移它们,则需要大量的手动工作和/或时间。

问题:

  • 是否有一种快速的方法来实现此迁移(JUnit 4 -> JUnit 5),例如。使用转换器工具或 sed 命令来交换 assertXY 语句的参数?

JUnit4 中的示例

@Test
public void testCreatePersonCorrect() {
    String name = UUID.randomUUID().toString();
    String title = UUID.randomUUID().toString();
    Person person = service.createPerson(title, name);
    assertNotNull("could not create a person", person);
    assertEquals("title did not equal for that person", title, person.getTitle());
    assertEquals("name did not equal for that person", name, person.getName());
 }

JUnit5 中的示例

@Test
public void testCreatePersonCorrect() {
    String name = UUID.randomUUID().toString();
    String title = UUID.randomUUID().toString();
    Person person = service.createPerson(title, name);
    assertNotNull(person, "could not create a person");
    assertEquals(title, person.getTitle(), "title did not equal for that person");
    assertEquals(name, person.getName(), "name did not equal for that person");
 }

最佳答案

您可能会找到 JUnit Pioneer 的 convert-junit4-to-junit5工具很有用。

如果您使用 IntelliJ IDEA,它具有从 JUnit 4 迁移到 JUnit Jupiter 的内置支持。请参阅 Trisha Gee 的 IntelliJ IDEA. Migrating from JUnit 4 to JUnit 5 YouTube 上的视频为例。

否则,请使用https://stackoverflow.com/a/65936638/388980中建议的重构技巧。可能是一个可行的替代方案。

关于java - 快速将assertXY语句从JUnit4迁移到Junit5?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65936196/

相关文章:

java - 由于参数异常,应用程序无法启动

java - 在一定的超时后清除 JTextfields

java - Android OpenGL ES - 我无法使 gluLookAt/gluPerspective 工作

ruby-on-rails-3 - Rails数据库测试和清除

java - 如何验证某些内容是否作为某个执行程序的主体被调用?

java - 用JPA重置MySql数据库的自增值

java - 将 double 格式设置为 2 位小数不起作用

java - 带有局部变量的 Mockito

java - JUnit 5 @EnumSource 的实际用例是什么?

java - 创建 JTable 的 Junit 测试是否良好?