如何创建Assertions.assertThrows的Live Template?批量迁移JUnit测试至Jupiter API
基于IntelliJ内置工具批量转换JUnit 4异常测试至JUnit Jupiter
方案一:结构替换(Structural Replace)—— 批量处理首选
这是最高效的批量转换方式,步骤如下:
- 打开「查找/替换」对话框(Windows/Linux:
Ctrl+R;Mac:Cmd+R),点击右上角的「结构替换」按钮(带箭头的方块图标)。 - 切换到「替换」标签页,直接导入预设的「JUnit 4 @Test(expected) to JUnit 5 Assertions.assertThrows」模板;若没有预设,手动配置模板:
查找模板:
替换模板:@Test(expected=$ExceptionClass$.class) public void $MethodName$() throws $ExceptionClass$ { $Statement$; }@Test void $MethodName$() { Assertions.assertThrows($ExceptionClass$.class, () -> { $Statement$; }); } - 点击「查找」预览匹配的测试用例,确认无误后点击「替换全部」。
- 批量替换完成后,用IntelliJ的「优化导入」(Windows/Linux:
Ctrl+Alt+O;Mac:Cmd+Alt+O)统一补全org.junit.jupiter.api.Assertions的导入。
方案二:自定义环绕模板(Surround With)—— 单文件/少量用例适配
适合零散测试用例的转换,步骤如下:
- 打开「设置」(Windows/Linux:
Ctrl+Alt+S;Mac:Cmd+,)→「编辑器」→「实时模板」。 - 点击「+」→「环绕模板」,配置:
- 缩写:比如
j5throw - 描述:JUnit 5 异常断言环绕
- 模板文本:
Assertions.assertThrows($EXCEPTION$.class, () -> { $SELECTION$; }); - 勾选「Java」,设置上下文为「语句」。
- 缩写:比如
- 使用流程:
- 删除旧
@Test注解的expected参数,保留@Test。 - 删除方法签名中的
throws 异常类声明。 - 选中方法体内的执行代码(比如
doSomeStuff();)。 - 按下
Ctrl+Alt+T(Windows/Linux)或Cmd+Alt+T(Mac),选择自定义的j5throw模板。 - 替换
$EXCEPTION$为对应异常类,IntelliJ会自动补全导入。
- 删除旧
方案三:自定义实时模板(Live Template)—— 快速重构单个用例
适合手动重构时快速生成标准格式:
- 先手动写出一个符合JUnit Jupiter规范的异常测试用例,选中该代码块,打开「设置」→「编辑器」→「实时模板」,点击「+」→「实时模板」。
- 配置:
- 缩写:比如
j5testthrow - 模板文本:
@Test void $METHOD$() { Assertions.assertThrows($EXCEPTION$.class, () -> { $CODE$; }); } - 设置变量:
$METHOD$关联方法名,$EXCEPTION$关联异常类,$CODE$关联执行代码。
- 缩写:比如
- 使用时,删除旧测试方法,输入缩写
j5testthrow按Tab,快速填充并修改变量即可。
内容的提问来源于stack exchange,提问作者Nicholas DiPiazza
相关产品推荐
相关产品推荐

