問題現(xiàn)象
使用Junit4.12寫單測的時候,通過IDEA運行單測用例哩牍,錯誤:提示包org.junit不存在。代碼也沒標(biāo)紅膝昆,點擊可以跳轉(zhuǎn)到類定義。
定位
通過mvn denpendency:tree查看junit4.12已經(jīng)引入荚孵,scope=test
通過mvn clean test命令方式運行妹窖,也是正常收叶。
是idea出了問題
尋找原因
重啟IDEA嘱吗,發(fā)現(xiàn)Assert類標(biāo)紅,通過alt+enter進行操作提示滔驾,提示需要引入junit包谒麦。
確認(rèn)引入junit包,查看當(dāng)前A模塊的pom.xml沒有哆致,查找發(fā)現(xiàn)junit被引入到了另一個B模塊的pom.xml里。
想起來摊阀,開始的時候胞此,有把單測文件從A挪到B過。
查看B模塊下的B.iml文件
B模塊.iml文件
<sourceFolder url="file://$MODULE_DIR$/../A/src/test/java" isTestSource="true" />
發(fā)現(xiàn)問題,B模塊里的TestSource目錄怎么指向A的地址刁赦。
所以娶聘,雖然單測文件和junit都是在A模塊丸升,但是通過IDEA執(zhí)行單測用例時牺氨,是在B模塊下執(zhí)行狡耻。因為單測用例所在目錄,是B模塊的TestSource目錄猴凹,自然在B模塊也找不到j(luò)unit包酝豪。
解決方法,刪除模塊A/B的iml文件精堕,重新執(zhí)行maven.reimport,重新生成iml文件蒲障,一切恢復(fù)正常歹篓。