Java导入语句不识别 JUnit运行报cannot find symbol错误如何解决
问题原因
你当前遇到的报错和你怀疑的import导入问题无关,核心原因有两个:
- 方法调用的类对象错误:你要调用的
hasBalancedMarks方法是定义在主类BalancedQuestionMarks中的,但你代码里写的是用测试类BalancedQuestionMarksTest调用该方法,测试类本身没有定义这个方法,自然会报找不到符号的错误。 assertTrue方法使用不符合规范:JUnit提供的assertTrue方法仅需要传入1个布尔类型的待校验参数,你额外传入的第二个true属于多余参数,即使方法调用改对也会触发语法报错。
如果你后续确实遇到main.BalancedQuestionMarks导入失败的问题,通常是项目结构配置错误导致:标准Java项目的业务代码需放在src/main/java目录下,测试代码需放在src/test/java目录下,两个目录都需要被IDE标记为源码根目录,才会被识别到类路径中。
解决步骤
- 修正测试代码中的方法调用逻辑,将调用方从
BalancedQuestionMarksTest改为BalancedQuestionMarks - 调整
assertTrue的传参,删掉多余的第二个true参数
修正后的完整测试代码如下:
import main.BalancedQuestionMarks; import org.junit.Test; import static org.junit.Assert.assertTrue; public class BalancedQuestionMarksTest { @Test public void onlyQuestionMarkReturnsTrue() { assertTrue(BalancedQuestionMarks.hasBalancedMarks("??")); } }
- 如果仍然存在导入报错,补充检查两个配置:
- 确认
BalancedQuestionMarks类顶部的包声明为package main;,和导入路径完全一致 - 确认业务代码、测试代码所在的目录已被IDE正确标记为源码根(IDEA中操作:右键对应目录→Mark Directory as→Sources Root/Test Sources Root)
- 确认
内容的提问来源于stack exchange,提问作者NewAndBold
相关产品推荐
相关产品推荐

