从Surefire 2.6升级到Surefire 2.13时,运行单元测试时会收到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
批注以确保其类型有效。我们的测试使用Spring,因此@RunWith
在我们的测试类中看起来像这样:@RunWith(SpringJUnit4ClassRunner.class)
Surefire似乎找不到
SpringJUnit4ClassRunner
类。我不确定为什么在Surefire 2.6下可以正常运行测试。有任何想法吗?
最佳答案
运行MVN依赖:解决
排除可能已潜入的JUnit的任何3.x版本。
确保没有TestNG依赖项,如果有,它将加载TestNG注释,而不是您需要的JUnit注释。
关于java - TypeNotPresentExceptionProxy,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/14656543/