web-dev-qa-db-ja.com

TypeNotPresentExceptionProxy

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でテストが正常に実行された理由がわかりません。

何か案は?

52
gangsta

Mvn dependency:resolveを実行します。

侵入した可能性のあるJUnitの3.xバージョンを除外します。

TestNG依存関係がないことを確認してください。依存している場合、必要なJUnitアノテーションではなくTestNGアノテーションがロードされます。

2
UserF40