TypeNotPresentExceptionProxy
从Surefire 2.6升级到Surefire 2.13时,在运行我的unit testing时,我得到一个TypeNotPresentExceptionProxy
。
java.lang.ArrayStoreException: sun.reflect.annotation.TypeNotPresentExceptionProxy at sun.reflect.annotation.AnnotationParser.parseClassArray(AnnotationParser.java:653) at sun.reflect.annotation.AnnotationParser.parseArray(AnnotationParser.java:460) at sun.reflect.annotation.AnnotationParser.parseMemberValue(AnnotationParser.java:286) at sun.reflect.annotation.AnnotationParser.parseAnnotation(AnnotationParser.java:222) at sun.reflect.annotation.AnnotationParser.parseAnnotations2(AnnotationParser.java:69) at sun.reflect.annotation.AnnotationParser.parseAnnotations(AnnotationParser.java:52) at java.lang.Class.initAnnotationsIfNecessary(Class.java:3070) at java.lang.Class.getAnnotation(Class.java:3029) at org.apache.maven.surefire.common.junit4.JUnit4TestChecker.isValidJUnit4Test(JUnit4TestChecker.java:64)
在JUnit4TestChecker
,第64行看起来像这样:
Annotation runWithAnnotation = testClass.getAnnotation( runWith );
所以Surefire会检查@RunWith
注解来确保它的types是有效的。 我们的testing使用Spring,因此@RunWith
在我们的testing类中看起来像这样:
@RunWith(SpringJUnit4ClassRunner.class)
似乎Surefire没有findSpringJUnit4ClassRunner
类。 我不确定为什么在Surefire 2.6下,testing运行良好。
有任何想法吗?
运行mvn依赖项:解决
排除任何可能进入的JUnit的3.x版本。
确保没有TestNG依赖关系,如果有,它将加载TestNG注释,而不是你需要的JUnit。