IntelliJ中JUnit Assert类标红、静态导入失败问题咨询
IntelliJ中JUnit Assert类无法解析问题排查步骤
- 第一步先核对JUnit版本与包路径匹配性
绝大多数这类问题都是混淆了JUnit4和JUnit5的包路径导致的:- 如果你项目用的是JUnit 5(Jupiter,目前IDEA新建Java项目默认集成的JUnit版本),根本不存在
org.junit.Assert这个类,JUnit5的断言类路径为org.junit.jupiter.api.Assertions,对应的静态导入语句应该写为import static org.junit.jupiter.api.Assertions.*;,硬导JUnit4的Assert类必然报无法解析符号。 - 如果你确定要使用JUnit4的Assert类,先确认构建文件中引入了正确的JUnit4依赖,不要只引入JUnit5的依赖包。以Maven为例,正确的JUnit4依赖配置如下:
<dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> <version>4.13.2</version> <scope>test</scope> </dependency>
- 如果你项目用的是JUnit 5(Jupiter,目前IDEA新建Java项目默认集成的JUnit版本),根本不存在
- 第二步排查目录标记问题
检查你的测试类所在目录是否被标记为测试源码根目录:标准Maven/Gradle项目的测试代码需要放在src/test/java路径下,如果你把测试代码写在src/main/java主源码目录中,由于JUnit依赖默认scope为test,主源码路径下无法访问test范围的依赖,就会出现类找不到的报错。可以右键对应目录,选择Mark Directory as -> Test Sources Root完成标记。 - 第三步修复IDEA索引异常
如果依赖和路径配置都没问题,大概率是IDEA缓存索引失效导致的:- 先右键项目根目录,选择对应构建工具(Maven/Gradle)的Reload Project选项重新拉取加载依赖
- 重载后依然报错的话,点击顶部菜单栏File -> Invalidate Caches...,勾选清除缓存选项后重启IDEA,等索引重建完成后报错就会消失
- 最后检查导入语句拼写
尝试导入assertthat方法时需要注意,JUnit4中该方法的正确命名为驼峰格式assertThat(T大写),全小写拼写的方法不存在,会导致静态导入失败。
内容的提问来源于stack exchange,提问作者Yuri Rolimus
相关产品推荐
相关产品推荐

