无Maven环境下VS Code Test Runner for Java无法运行JUnit5测试问询
问题原因
Test Runner for Java扩展对JUnit5测试用例的识别有严格的规范校验:被@Test注解标注的测试方法不能使用static修饰。
你当前编写的两个测试方法都添加了static修饰符,因此会被扩展直接判定为非有效测试用例,不会纳入执行列表,所以出现0/0的运行结果。命令行运行正常是因为junit-platform-console-standalone包对静态测试方法的兼容性更高,不会严格校验该修饰符规则,才会出现两端运行结果不一致的情况。
解决方案
按以下步骤操作即可修复:
- 第一步:修改
DemoJUnitTest.java代码,删除两个测试方法的static修饰符,修改后的代码如下:
package demojunit; import org.junit.jupiter.api.Assertions; import org.junit.jupiter.api.Test; public class DemoJUnitTest { @Test public void computeFactorial_CleanTest() { long expected_value = 120; long real_value = DemoJUnit.computeFactorial(5); Assertions.assertEquals(expected_value, real_value); } @Test public void computeFactorial_DirtyTest() { long expected_value = -1; long real_value = DemoJUnit.computeFactorial(0); Assertions.assertEquals(expected_value, real_value); } }
- 第二步:保存修改后,按F1调出VS Code命令面板,执行
Java: Clean Java Language Server Workspace命令,重启Java语言服务刷新测试识别缓存。 - 第三步:重新打开测试面板,即可看到两个被正常识别的测试用例,点击运行即可得到正确结果。
额外提示
给大一学生演示时可以简单说明:JUnit5规范默认要求测试方法为实例方法,不需要加static修饰,相关细节会在后续JUnit系统教学中讲解即可。
内容的提问来源于stack exchange,提问作者leftcursor
相关产品推荐
相关产品推荐

