TypeNotPresentExceptionProxy

Beim Upgrade von Surefire 2,6-Surefire 2.13, bekomme ich eine TypeNotPresentExceptionProxy beim laufen meine unit-tests.

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, der Linie 64, die wie folgt aussieht:

Annotation runWithAnnotation = testClass.getAnnotation( runWith );

So Todsichere inspiziert die @RunWith annotation, um sicherzustellen, seine Art gültig ist. Unsere tests verwenden Frühling, so @RunWith sieht wie diese in unserem test-Klassen:

@RunWith(SpringJUnit4ClassRunner.class)

Wie es scheint, Surefire ist nicht zu finden, die SpringJUnit4ClassRunner Klasse. Ich bin mir nicht sicher, warum, da unter Todsichere 2.6 die tests gut laufen.

Irgendwelche Ideen?

  • Klingt wie ein bug. Kannst du bitte erstellen Sie eine bug report, wenn es nicht bereits.
  • Vielen Dank für deinen input. Ich werde versuchen, erstellen Sie eine neue, einfachere Projekt, das veranschaulicht, das gleiche Problem. Öffnen Sie dann einen bug-report.
  • Haben Sie überprüft, neuere version verursachen in der Zwischenzeit sind wir bei 2.18.1 ?
  • Bitte poste die Versionen von Java, Maven und Spring und die Konfiguration der maven-surefire-plugin.
  • Klingt für mich wie es ist RunWith, die nicht gefunden werden kann. Ist es möglich, Sie haben zwei Versionen von Surefire läuft in die gleiche classloader? Ist eine Ihrer Abhängigkeiten laden einer anderen version? Das sieht aus wie die Art von problem, das Sie stoßen können, wenn Sie versuchen zu laden von zwei unterschiedlichen Versionen der gleichen Klasse.
  • Ich hatte die gleiche Ausnahme, wenn der annotation-parameter (SpringJunit4ClassRunner.class in diesem Fall) war nicht auf meiner classpath.

InformationsquelleAutor gangsta | 2013-02-01
Schreibe einen Kommentar