52

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)

の 64 行目はJUnit4TestChecker次のようになります。

Annotation runWithAnnotation = testClass.getAnnotation( runWith );

そのため、Surefire は@RunWith注釈を検査して、その型が有効であることを確認します。私たちのテストでは Spring を使用しているため@RunWith、テスト クラスは次のようになります。

@RunWith(SpringJUnit4ClassRunner.class)

SpringJUnit4ClassRunnerSurefire がクラスを見つけられないようです。Surefire 2.6 ではテストが正常に実行されるため、その理由はわかりません。

何か案は?

4

1 に答える 1