問題現(xiàn)象
使用Junit4.12寫單測的時候,通過IDEA運行單測用例,錯誤:提示包org.junit不存在。代碼也沒標紅,點擊可以跳轉(zhuǎn)到類定義。
定位
通過mvn denpendency:tree查看junit4.12已經(jīng)引入,scope=test
通過mvn clean test命令方式運行,也是正常。
是idea出了問題
尋找原因
重啟IDEA,發(fā)現(xiàn)Assert類標紅,通過alt+enter進行操作提示,提示需要引入junit包。
確認引入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ù)正常。