从 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)
In JUnit4TestChecker
,第 64 行如下所示:
Annotation runWithAnnotation = testClass.getAnnotation( runWith );
因此 Surefire 检查@RunWith
注释以确保其类型有效。我们的测试使用Spring,所以@RunWith
在我们的测试类中看起来像这样:
@RunWith(SpringJUnit4ClassRunner.class)
Surefire 似乎没有找到SpringJUnit4ClassRunner
班级。我不知道为什么在 Surefire 2.6 下测试运行良好。
有任何想法吗?
运行 mvn dependency:resolve
排除可能潜入的任何 3.x 版本的 JUnit。
确保没有 TestNG 依赖项,如果有,它将加载 TestNG 注释,而不是您需要的 JUnit 注释。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)