##经过查找后发现可能是引入的jar包冲突或者找不到的原因。因此检查pom.xml文件,是否存在冲突。
还有一个原因,添加了surefire插件来控制单测执行时,有时候可能会将并无单测的以Test命名的java文件当作case来执行。
maven的default生命周期的test阶段与maven-surefire-plugin插件的test插件目标内置绑定。默认情况下,maven-surefire-plugin的test目标会自动执行测试源码路径(默认:src/test/java)下的所有符合一组命名规则的测试类。该命名规则如下:
1. **/Test*</span>.java 任何子目录下所有命名以Test开头的java类
2. Test.java 任何子目录下所有命名以Test结尾的java类
3. TestCase.java 任何子目录下所有命名以TestCase结尾的java类
例如,有一个名为TestUtils.java的类,仅提供供Test使用的方法,而本身并不是unit test case。
使用surefire来执行的时候,会把TestUtils.java同样当成一个test case来执行,
因此就会出现InitializationError.
解决方法:
1. surefire中排除改文件:
<plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-surefire-plugin</artifactId> <version>2.5</version> <configuration> <testFailureIgnore>true</testFailureIgnore> <excludes> <exclude>**/TestUtils.java</exclude> </excludes> </configuration> </plugin>
2. 重命名TestUtils.java为ProjectUtils.java.