Ошибка при запуске весенних загрузочных тестов, 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

Вот мои зависимости gradle: введите описание изображения здесь

Кроме того, у меня есть затронутый класс в пути к классам: введите описание изображения здесь

Моя весенняя загрузочная версия - 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>

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

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

Другие вопросы по тегам