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.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Führen Sie mvn dependency:resolve
Auszuschließen 3.x-version von JUnit, die möglicherweise haben sich eingeschlichen.
Sicherzustellen, gibt es keine TestNG Abhängigkeiten, wenn es geladen werden, TestNG annotations und nicht die JUnit-diejenigen, die Sie brauchen.