Ошибка при запуске весенних загрузочных тестов, SpringRunner.class Не найдено
Когда я пытаюсь вызвать тестовые примеры JUnit из моего приложения Spring Boot, я получаю следующую ошибку:
Я использую эту аннотацию в своем тестовом классе.
@RunWith (SpringRunner.class)
После того, как я добавил библиотеку JUnit из зависимостей проекта, она выдает мне следующую ошибку:
java.lang.TypeNotPresentException: Type org.springframework.test.context.junit4.SpringRunner not present
at sun.reflect.annotation.TypeNotPresentExceptionProxy.generateException(TypeNotPresentExceptionProxy.java:46)
at sun.reflect.annotation.AnnotationInvocationHandler.invoke(AnnotationInvocationHandler.java:84)
at com.sun.proxy.$Proxy2.value(Unknown Source)
at org.junit.internal.builders.AnnotatedBuilder.runnerForClass(AnnotatedBuilder.java:86)
at org.junit.runners.model.RunnerBuilder.safeRunnerForClass(RunnerBuilder.java:59)
at org.junit.internal.builders.AllDefaultPossibilitiesBuilder.runnerForClass(AllDefaultPossibilitiesBuilder.java:26)
at org.junit.runners.model.RunnerBuilder.safeRunnerForClass(RunnerBuilder.java:59)
at org.junit.internal.requests.ClassRequest.getRunner(ClassRequest.java:33)
at org.eclipse.jdt.internal.junit4.runner.JUnit4TestLoader.createUnfilteredTest(JUnit4TestLoader.java:87)
at org.eclipse.jdt.internal.junit4.runner.JUnit4TestLoader.createTest(JUnit4TestLoader.java:73)
at org.eclipse.jdt.internal.junit4.runner.JUnit4TestLoader.loadTests(JUnit4TestLoader.java:46)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:522)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:760)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.run(RemoteTestRunner.java:460)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.main(RemoteTestRunner.java:206)
Caused by: java.lang.ClassNotFoundException: org.springframework.test.context.junit4.SpringRunner
at java.net.URLClassLoader.findClass(URLClassLoader.java:381)
at java.lang.ClassLoader.loadClass(ClassLoader.java:424)
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:349)
at java.lang.ClassLoader.loadClass(ClassLoader.java:357)
at java.lang.Class.forName0(Native Method)
at java.lang.Class.forName(Class.java:348)
at sun.reflect.generics.factory.CoreReflectionFactory.makeNamedType(CoreReflectionFactory.java:114)
at sun.reflect.generics.visitor.Reifier.visitClassTypeSignature(Reifier.java:125)
at sun.reflect.generics.tree.ClassTypeSignature.accept(ClassTypeSignature.java:49)
at sun.reflect.annotation.AnnotationParser.parseSig(AnnotationParser.java:439)
at sun.reflect.annotation.AnnotationParser.parseClassValue(AnnotationParser.java:420)
at sun.reflect.annotation.AnnotationParser.parseMemberValue(AnnotationParser.java:349)
at sun.reflect.annotation.AnnotationParser.parseAnnotation2(AnnotationParser.java:286)
at sun.reflect.annotation.AnnotationParser.parseAnnotations2(AnnotationParser.java:120)
at sun.reflect.annotation.AnnotationParser.parseAnnotations(AnnotationParser.java:72)
at java.lang.Class.createAnnotationData(Class.java:3521)
at java.lang.Class.annotationData(Class.java:3510)
at java.lang.Class.getAnnotation(Class.java:3415)
at org.junit.internal.builders.IgnoredBuilder.runnerForClass(IgnoredBuilder.java:10)
... 11 more
Кроме того, у меня есть затронутый класс в пути к классам:
Моя весенняя загрузочная версия - 2.0.4. Редактор - SpringToolSuite. Может ли кто-нибудь помочь мне решить эту проблему?
Спасибо
4 ответа
Я попытался запустить Junit, создав еще один пример проекта с Gradle, и он просто отлично работает, и был удивлен, увидев, что ниже приведены две зависимости, которые создают проблемы, упомянутые в моем посте. Это просто отлично работает, если я удаляю эти зависимости. Не уверен, что здесь происходит:
compile ('org.springframework.boot: spring-boot-starter-data-jpa') compile ('com.fasterxml.jackson.core: 2.9.6')
Вам не нужно извлекать зависимость JUnit 4 через "библиотеку JUnit" Eclipse.
Вместо этого вы должны использовать версию JUnit 4, которую spring-boot-starter-test
зависимость тянет транзитивно (и автоматически). Это должно использовать JUnit 4.12 для вас, что требуется для всех современных версий Spring Boot Test.
Если это не поможет вам решить проблему, пожалуйста, опубликуйте весь свой скрипт сборки Gradle (или столько, сколько сможете поделиться).
Я думаю, что вы упускаете зависимость от JUnit, потому что весна пытается найти что-то в org/junit/, но у вас этого не было.
Я никогда не использую Gradle, но для Maven это должно быть как ниже.
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.10</version>
</dependency>
Надеюсь это поможет.