Java计算器Junit测试报No tests found matching Method addtest错误求解
问题根因与修复方案
1. "No tests found matching Method addtest"报错原因
- 测试类命名不匹配:你声明创建的测试类名为Calculation_JUnit_Test,但实际代码中的测试类名是
Calculation_JUnitTest,缺少类名中间的下划线,测试执行器找不到对应类下的目标方法 - 方法名拼写/大小写不匹配:报错要查找的是
addtest,但你代码里的加法测试方法名为Add_Test,大小写、分隔符规则都不一致,如果是单独运行指定方法名的测试,就会出现匹配失败的情况 - JUnit版本不匹配:如果你的项目依赖是JUnit5,但是用了JUnit4的注解(
@Before、@Test均为JUnit4注解),也会触发找不到测试的报错
2. 类方法使用问题
你业务类里的add、sub、mul、div都是static静态方法,不需要实例化Calculation_JUnit对象调用,直接通过类名调用即可,代码中多次new Calculation_JUnit()属于不必要的冗余操作。
3. 测试逻辑错误
所有测试方法都错误调用了add方法,减法、乘法、除法测试均未调用对应的sub、mul、div方法,且断言的预期值和传参逻辑完全不匹配,比如加法测试传参2和1,预期返回值为5,逻辑完全错误。
修复后代码示例
业务类(仅补充遗漏的闭合括号,无逻辑改动)
package com.example; public class Calculation_JUnit { public static int add(int a, int b){ return a+b; } public static int sub(int a, int b){ return a-b; } public static int mul(int a, int b){ return a*b; } public static int div(int a, int b){ return a/b; } }
测试类修复版
import org.junit.*; import static org.junit.Assert.assertEquals; import com.example.Calculation_JUnit; // 类名和声明的命名保持一致 public class Calculation_JUnit_Test { @Before public void setUp() { System.out.println("测试开始执行"); } @Test public void addTest() { // 静态方法直接通过类名调用,无需实例化 assertEquals("加法测试不通过",3, Calculation_JUnit.add(2,1)); } @Test public void subTest() { assertEquals("减法测试不通过",4, Calculation_JUnit.sub(5,1)); } @Test public void mulTest() { assertEquals("乘法测试不通过",5, Calculation_JUnit.mul(5,1)); } @Test public void divTest() { assertEquals("除法测试不通过",4, Calculation_JUnit.div(4,1)); } }
额外注意事项
- 如果使用JUnit5,需要把注解替换为
@BeforeEach、@org.junit.jupiter.api.Test,导入对应包即可正常运行 - 现有除法方法没有做除数为0的异常处理,建议补充对应场景的异常测试,避免运行时崩溃
- 测试方法名建议统一使用小驼峰命名,和报错提示的命名风格对齐,避免单独运行单个方法时出现匹配失败问题
内容的提问来源于stack exchange,提问作者Yura Gajdar
相关产品推荐
相关产品推荐

