前提:原有项目一切运行正常,单元测试正常执行。
项目开始使用Maven管理,结果发现原有的JUnit测试无法执行,类无法找到(java.lang.ClassNotFoundException)。无论如何修改Maven配置,报错依然。
产生的原因:
MyEclipse之所以能识别项目,是根据.project文件解析;而项目的目录结构则是在.classpath文件中定义。MyEclipse的JUnit插件也是根据以上文件来查找源代码和class文件的存放目录,JUnit将编译之后的class文件存放在test-class里了。项目集成Maven后,通过执行maven命令,则class文件生成目录由pom.xml文件指定。
而Maven默认使用的工程目录结构和MyEclipse中的默认目录结构不同,此时,当pom.xml文件中指定的目录和.classpath文件指定的目录不同时,就会报上文中提到的错误。
因此,项目集成Maven时,执行JUnit测试时需要注意的地方如下:
pom.xml文件中的如下配置
应该和.classpath文件中的如下配置相对应。
如此配置之后,JUnit可正确执行,而又不影响Maven的打包、发布等功能。