如何解决快速将 assertXY 语句从 JUnit4 迁移到 Junit5?
我们的项目中有数千个使用 JUnit4 构建的单元测试。目前,我们正在向 junit5 迁移。
但是,assertXY
语句的不同方法签名(从 JUnit 4 更改为 JUnit 5)如果我们以手动方式迁移它们,则需要大量的手动工作和/或时间。
问题:
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");
}
解决方法
在开始源代码处理之前只是一个想法...
我将为 JUnit4 断言 (org.junit.Assert) 创建一个自定义包装类,如下所示:
public static class YourAsserts {
...
public static void assertNotNull(String string,Object object) {
Assert.assertNotNull(string,object);
}
...
}
之后,我将从依赖项中删除 JUnit4 和 JUnit5,并组织导入以使用您的自定义断言内容。重新添加 JUnit4 并测试更改。所有测试仍应通过。
选择包装器中的方法并使用重构工具更改方法的签名。 (在 Eclipse 中:Alt + Shift + C) 如果更改了所有方法,只需删除您的包装类并将 JUnit5 添加到依赖项并再次组织导入。再次运行测试。
这对我有用,但目前我正在使用 Hamcrest。那个更强大。
,您可能会发现 JUnit Pioneer 的 convert-junit4-to-junit5 工具很有用。
如果您使用的是 IntelliJ IDEA,它具有从 JUnit 4 迁移到 JUnit Jupiter 的内置支持。有关示例,请参阅 Trisha Gee 在 YouTube 上的 IntelliJ IDEA. Migrating from JUnit 4 to JUnit 5 视频。
否则,https://stackoverflow.com/a/65936638/388980 中建议的重构技巧可能是一个可行的替代方案。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。