如何在Eclipse中为已实现类运行JUnit测试?被测类不存在报错如何解决
问题根因
你当前的MyInteger类是定义在HW3.java源文件中的非公有类,Eclipse的JUnit类扫描逻辑默认只会识别独立的public类作为可测试的目标类,因此会提示被测类不存在。
解决步骤
第一步:拆分独立的
MyInteger公有类
在evenodd包下新建MyInteger.java源文件,将原HW3.java中的MyInteger类代码完整剪切到该文件中,给类加上public修饰符,修改后类声明为:public class MyInteger { // 原有类内部代码保持不变 }保存两个文件后执行项目编译,确认没有语法报错。
第二步:重新创建/修改JUnit测试类
新建JUnit测试类时,在「Class under test」输入栏直接输入全限定类名evenodd.MyInteger,或者点击浏览按钮选择刚刚拆分完成的MyInteger类即可被正确识别。测试类的包声明必须和被测类保持一致,示例测试代码参考:package evenodd; import org.junit.Test; import static org.junit.Assert.*; public class MyIntegerTest { @Test public void testIsEvenInstance() { MyInteger testEven = new MyInteger(20); assertTrue(testEven.isEven()); MyInteger testOdd = new MyInteger(17); assertFalse(testOdd.isEven()); } @Test public void testEquals() { MyInteger int1 = new MyInteger(5); MyInteger int2 = new MyInteger(5); assertTrue(int1.equals(int2)); assertTrue(int1.equals(5)); } }第三步:排查编译路径配置(若前两步未解决)
右键项目→选择「Properties」→进入「Java Build Path」设置页:- 确认业务代码源文件夹和测试代码源文件夹都被正确添加到Source标签下
- 确认没有配置排除规则过滤evenodd包的编译
- 确认项目的JDK版本和JUnit版本兼容,没有类加载冲突。
内容的提问来源于stack exchange,提问作者Jack Beyer
相关产品推荐
相关产品推荐

