Ошибка при запуске загрузочных тестов Spring, SpringRunner.class Не найдено - PullRequest
0 голосов
/ 13 сентября 2018

Когда я пытаюсь вызвать тестовые примеры JUnit из моего Spring Boot Application, я получаю следующую ошибку:

Я использую эту аннотацию в своем классе Test.

@ RunWith(SpringRunner.class)

enter image description here

После добавления библиотеки JUnit из зависимостей проекта выдается следующая ошибка:

enter image description here

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

Вот мои зависимости gradle: enter image description here

Кроме того, у меня есть затронутый класс в пути к классам: enter image description here

Моя версия весенней загрузки - 2.0.4.Редактор - SpringToolSuite.Может ли кто-нибудь помочь мне решить эту проблему?

Спасибо

Ответы [ 4 ]

0 голосов
/ 17 сентября 2018

@ trjade, вот скриншот моих зависимостей:

enter image description here

0 голосов
/ 13 сентября 2018

Вам не нужно извлекать зависимость JUnit 4 через "библиотеку JUnit" Eclipse.

Вместо этого вам следует использовать версию JUnit 4, которую зависимость spring-boot-starter-test переносит в транзитивно (и автоматически).Это должно использовать JUnit 4.12 для вас, что требуется для всех современных версий Spring Boot Test.

Если это не поможет вам разобраться с проблемой, пожалуйста, опубликуйте весь свой скрипт сборки Gradle (или столько же).как вы можете поделиться).

0 голосов
/ 13 сентября 2018

Я попытался запустить Junit, создав еще один пример проекта с Gradle, и он просто отлично работает, и был удивлен, увидев, что ниже приведены две зависимости, которые создают проблемы, упомянутые в моем посте.Это просто отлично работает, если я удаляю эти зависимости.Не уверен, что здесь происходит:

compile ('org.springframework.boot: spring-boot-starter-data-jpa') compile ('com.fasterxml.jackson.core: 2.9.6')

0 голосов
/ 13 сентября 2018

Я думаю, что вы упускаете зависимость от JUnit, потому что Spring пытается найти что-то в org / junit /, но у вас этого не было.

Я никогда не использую gradle, но для maven он должен быть таким, как показано ниже.

<dependency>
    <groupId>junit</groupId>
    <artifactId>junit</artifactId>
    <version>4.10</version>
</dependency>

Надеюсь, это поможет.

...