org.junit不存在(已引入包)

问题现象

使用Junit4.12写单测的时候,通过IDEA运行单测用例,错误:提示包org.junit不存在。代码也没标红,点击可以跳转到类定义。

定位

通过mvn denpendency:tree查看junit4.12已经引入,scope=test
通过mvn clean test命令方式运行,也是正常。
是idea出了问题

寻找原因

重启IDEA,发现Assert类标红,通过alt+enter进行操作提示,提示需要引入junit包。
确认引入junit包,查看当前A模块的pom.xml没有,查找发现junit被引入到了另一个B模块的pom.xml里。
想起来,开始的时候,有把单测文件从A挪到B过。
查看B模块下的B.iml文件

B模块.iml文件
<sourceFolder url="file://$MODULE_DIR$/../A/src/test/java" isTestSource="true" />

发现问题,B模块里的TestSource目录怎么指向A的地址。
所以,虽然单测文件和junit都是在A模块,但是通过IDEA执行单测用例时,是在B模块下执行。因为单测用例所在目录,是B模块的TestSource目录,自然在B模块也找不到junit包。

解决方法,删除模块A/B的iml文件,重新执行maven.reimport,重新生成iml文件,一切恢复正常。

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 专业考题类型管理运行工作负责人一般作业考题内容选项A选项B选项C选项D选项E选项F正确答案 变电单选GYSZ本规程...
    小白兔去钓鱼阅读 9,072评论 0 13
  • 第1章 Maven 介绍 什么是 Maven 什么是 Maven Maven 的正确发音是[ˈmevən],而不是...
    强某某阅读 2,433评论 0 25
  • 单元测试 单测定义 单元测试(Unit Testing)又称为模块测试, 是针对程序模块(软件设计的最小单位)来进...
    运维开发笔记阅读 2,028评论 0 2
  • 中十 谭娟 这2天约练了3次,感受颇丰。 看到当事人的不容易是一个关键点,前提是要有具体目标,把具体目标找到以后,...
    蕾小姐爱学习阅读 195评论 0 2
  • 我还不明白,为什么这么快,青春,就这样被掩埋。化成一颗尘埃,忽然砸下来,我还,没有准备的现在——《寂寞》 不由得感...
    流浪离殇阅读 565评论 2 8