Проблема
Всякий раз, когда я запускаю свои проекты JUnit test (используя JUnit 5 с Java 9 и Eclipse Oxygen 1.a), я сталкиваюсь с проблемой, что eclipse не может найти никаких тестов.
Описание
В конфигурации запуска eclipse не может даже найти метод, помеченный @Test, а вместо этого показывает мне только « (все методы) ». Надеюсь, следующее изображение дает лучшее представление о моей установке:
Вывод в консоль:
java.lang.NoClassDefFoundError: org/junit/platform/launcher/core/LauncherFactory
at org.eclipse.jdt.internal.junit5.runner.JUnit5TestLoader.<init>(JUnit5TestLoader.java:31)
at java.base/jdk.internal.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
at java.base/jdk.internal.reflect.NativeConstructorAccessorImpl.newInstance(Unknown Source)
at java.base/jdk.internal.reflect.DelegatingConstructorAccessorImpl.newInstance(Unknown Source)
at java.base/java.lang.reflect.Constructor.newInstance(Unknown Source)
at java.base/java.lang.Class.newInstance(Unknown Source)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.createRawTestLoader(RemoteTestRunner.java:368)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.createLoader(RemoteTestRunner.java:363)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.defaultInit(RemoteTestRunner.java:307)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.init(RemoteTestRunner.java:222)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.main(RemoteTestRunner.java:206)
Caused by: java.lang.ClassNotFoundException: org.junit.platform.launcher.core.LauncherFactory
at java.base/jdk.internal.loader.BuiltinClassLoader.loadClass(Unknown Source)
at java.base/jdk.internal.loader.ClassLoaders$AppClassLoader.loadClass(Unknown Source)
at java.base/java.lang.ClassLoader.loadClass(Unknown Source)
... 11 more
Что я пробовал до сих пор
Я уже пробовал
- чтобы удалить тестовую папку из пути сборки и добавить ее снова.
- чтобы начать тест, наведите указатель мыши на метод, помеченный @Test, и нажмите «Запуск от имени JUnit Test».
- удалите JUnit из Buildpath и добавьте его снова
- перезапустить затмение
- Я также переместил весь проект с одной машины на другую и попробовал его с предоставленной установкой eclipse.
- переименовать метод тестирования.
- повторно ввести аннотацию @Test
Некоторые из этих шагов можно найти здесь , но в итоге проблема осталась.
Ответы:
Вы столкнулись с ошибкой Eclipse 525948, которая уже исправлена и будет опубликована в следующем выпуске Oxygen.3 (4.7.3), 21 марта 2018 г.
В качестве обходного пути поместите тестовый код в отдельный проект и добавьте тестируемый проект в путь к модулю, но не добавляйте
module-info.java
в тестовый проект. С именем вашего проекта, класса и модуля это должно выглядеть примерно так:См. Также мое видео, в котором показаны Java 9 и JUnit 5 в Eclipse Oxygen.1a в действии.
источник
module-info.java
). В Eclipse проект Java имеет одну выходную папку и поэтому может содержать только одну или ни однойmodule-info.java
. Но вы можете добавлять модули в путь к модулю проекта, даже если проект не является модульным (не имеетmodule-info.java
).Я исправил проблему, щелкнув тест правой кнопкой мыши, выбрав «Выполнить конфигурации» и изменив значение «Средство выполнения теста:» на «JUnit 4», как показано здесь:
Я снова провел тест, и он сработал.
источник
У меня такая же проблема с STS 3.9.1. Это похоже на ошибку Eclipse, однако, чтобы исправить это, вы можете добавить тестовую зависимость
junit-platform-launcher
в свой проект ( https://mvnrepository.com/artifact/org.junit.platform/junit-platform-launcher )Вот как я поступил со своим проектом, в котором используется gradle:
dependencies { // other stuff here testCompile group: 'org.junit.jupiter', name: 'junit-jupiter-engine', version: "5.${junit5MinorVersion}" testCompile group: 'org.junit.platform', name: 'junit-platform-launcher', version: "1.${junit5MinorVersion}" }
файл gradle.properties:
junit5MinorVersion=1.0
Я считаю, что то же самое применимо, если вы видите это исключение при использовании IntelliJ IDEA.
источник
build.gradle
. Если вы используете maven, этоpom.xml
. Однако формат для maven отличается.В моем случае проблема была во мне, а не в среде IDE, такой как Eclipse. Я импортировал тестовый класс JUnit 4.
Так что НЕ импортируйте это:
import org.junit.Test // JUnit 4
Но импортируйте это:
import org.junit.jupiter.api.Test // JUnit 5
источник
Ответы до сих пор не касались проблемы совместного использования кода с другими людьми, которые не обязательно используют Eclipse. Вот одно предложение. Ключ в том, чтобы использовать профиль maven для решения дела Eclipse.
Предполагается, что вы определили свойство
junit5.version
в своем pom, например:<properties> <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> <junit5.version>5.1.1</junit5.version> </properties>
затем в
profiles
разделе добавьте следующее:<profiles> <profile> <id>eclipse</id> <dependencies> <dependency> <groupId>org.junit.jupiter</groupId> <artifactId>junit-jupiter-engine</artifactId> </dependency> <dependency> <groupId>org.junit.platform</groupId> <artifactId>junit-platform-launcher</artifactId> </dependency> </dependencies> <dependencyManagement> <dependencies> <dependency> <groupId>org.junit.jupiter</groupId> <artifactId>junit-jupiter-engine</artifactId> <version>${junit5.version}</version> <scope>test</scope> </dependency> <dependency> <groupId>org.junit.platform</groupId> <artifactId>junit-platform-launcher</artifactId> <version>1.1.1</version> <scope>test</scope> </dependency> </dependencies> </dependencyManagement> </profile> </profiles>
Все, что вам нужно сделать после этого, - это выбрать профиль в вашем локальном Eclipse: щелкните правой кнопкой мыши свой проект и выберите
Maven > Select Maven Profiles...
(или нажмите Ctrl+ Alt+ P), а затем проверьте профиль «eclipse», который мы только что создали.С этим все готово. Ваш Eclipse будет запускать тесты Junit 5, как ожидалось, но добавленная вами конфигурация не будет загрязнять другие сборки или другую IDE.
источник
Добавление этой зависимости maven с JUnit Jupiter (v.5.5.1) решает проблему.
<dependency> <groupId>org.junit.platform</groupId> <artifactId>junit-platform-launcher</artifactId> <version>1.5.1</version> <scope>test</scope> </dependency>
источник
ПРОСТОЕ ИСПРАВЛЕНИЕ: (Добавить библиотеку JUnit 5)
ИНСТРУКЦИИ:
источник
Ни одно из решений не помогло:
Проблема в том, что Eclipse 2018-12 поддерживает JUnit 5.3.1. Если вы запустите его с более ранней версией, он выйдет из строя.
Поэтому убедитесь, что вы используете версию не ниже 5.3.1.
5.4.0 тоже работает.
Если ваш родительский pom - это Spring Boot, вам необходимо убедиться (в управлении зависимостями), что для junit-jupiter-api установлена та же версия. Вам не нужны junit-platform-runner или -launcher !
источник
<junit-jupiter.version>5.4.1</junit-jupiter.version>
чтобы переопределить версию, используемую при загрузке Spring (2.1.3.RELEASE).После ответа Андрея Караиванского вот декларация Maven POM:
<properties> ... <junit-jupiter.version>5.2.0</junit-jupiter.version> <junit-platform.version>1.2.0</junit-platform.version> ... </properties> <dependencies> ... <dependency> <groupId>org.junit.jupiter</groupId> <artifactId>junit-jupiter-engine</artifactId> <version>${junit-jupiter.version}</version> <scope>test</scope> </dependency> <dependency> <groupId>org.junit.platform</groupId> <artifactId>junit-platform-launcher</artifactId> <version>${junit-platform.version}</version> <scope>test</scope> </dependency> ... </dependencies>
ОБНОВИТЬ
Согласно комментарию Александра Весселя, вы можете использовать org.junit: junit-bom, как описано в его ответе на вопрос Eclipse Тесты с использованием JUnit 5, вызванные NoClassDefFoundError для LauncherFactory, не обнаружены .
источник
scope=import type=pom
, затем добавьте зависимости для junit-platform-launcher и junit-jupiter-engine в области тестирования, не указывая версию в разделе зависимостей. Спецификация всегда гарантирует, что у вас есть только одна версия JUnit Platform и Jupiter в пути к классам, и что соответствующие версии являются теми, которые предназначены (например, 5.2.0 с 1.2.0).К вашему сведению, еще одна причина «Тестов с использованием junit5 не обнаружено» - это (случайно или намеренно) объявление тестовых примеров «закрытыми»:
// Example of test case that doesn't get included @Test private void testSomeMethod() { }
Они должны быть публичными.
источник
Я также столкнулся с той же проблемой, что вам просто нужно добавить библиотеку, библиотека Junit уже предоставляется вместе с Eclipse, поэтому вам просто нужно следовать ниже
Путь сборки> Настроить путь сборки> библиотека> Добавить библиотеку> JUnit> Далее> закончить
Меня устраивает
источник
С самого начала сообщение об ошибке сообщает вам, что класс не найден:
NoClassDefFoundError
это означает, что проблема в пути к junit.Щелкните правой кнопкой мыши папку проекта и выберите «Свойства» ИЛИ выберите папку проекта и нажмите комбинацию cmd + i.
выберите из списка «Путь сборки Java».
Это все. Попробуйте снова запустить тест.
источник
ты должен знать что :
@Before из junit4 идет с @Test: " import org.junit.Test "
А ТАКЖЕ
@BeforeEach от Junit5 идет с: " import org.junit.jupiter.api.Test "
поэтому убедитесь, что вы используете импорт из той же версии Junit, иначе, я думаю, это не сработает.
источник
При использовании STS 3.9.1 у меня возникла та же проблема. Однако в настоящее время мне не требуются какие-либо новые функции JUnit5, поэтому я попытался принудительно использовать старую версию. Если вы используете maven, вы можете добавить в свой pom.xml следующие зависимости:
Это помогло мне (по крайней мере, до тех пор, пока мне явно не нужен JUnit5).
источник
У меня такая же проблема после создания нового TestCase: Eclipse -> New -> JUnit Test Case. Он создает класс без модификатора уровня доступа. Я мог бы решить проблему, просто поставив public перед ключевым словом class .
источник
Поскольку все сообщили, что это ошибка IDE, я попробовал
Eclipse
иSTS
. В обоих случаях это не удается.В качестве обходного пути я исправил, изменив файл pom.xml, как показано ниже.
Я добавил эти две зависимости maven
junit-jupiter-engine
иjunit-platform-launcher
.pom.xml
<!-- https://mvnrepository.com/artifact/org.junit.jupiter/junit-jupiter-engine --> <dependency> <groupId>org.junit.jupiter</groupId> <artifactId>junit-jupiter-engine</artifactId> <version>${junit-jupiter.version}</version> <scope>test</scope> </dependency> <!-- https://mvnrepository.com/artifact/org.junit.platform/junit-platform launcher --> <dependency> <groupId>org.junit.platform</groupId> <artifactId>junit-platform-launcher</artifactId> <version>${junit-platform.version}</version> <scope>test</scope> </dependency> </dependencies>
Также не забудьте добавить версии обеих зависимостей maven в тег свойств.
<properties> <java.version>1.8</java.version> <junit-jupiter.version>5.2.0</junit-jupiter.version> <junit-platform.version>1.2.0</junit-platform.version> </properties>
источник
Я использую eclipse 2019-09.
Пришлось обновить версию junit-bom как минимум до 5.4.0. Раньше у меня была версия 5.3.1, и это вызывало те же симптомы OP.
Моя конфигурация сейчас:
<dependencyManagement> <dependencies> <dependency> <groupId>org.junit</groupId> <artifactId>junit-bom</artifactId> <version>5.5.2</version> <type>pom</type> <scope>import</scope> </dependency> </dependencies> </dependencyManagement>
источник
Поскольку невозможно разместить блоки кода в комментариях, вот шаблон POM, который я использую в проектах, требующих JUnit 5. Это позволяет создавать и «Запускать как JUnit Test» в Eclipse, а также строить проект с помощью простого Maven.
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> <modelVersion>4.0.0</modelVersion> <groupId>group</groupId> <artifactId>project</artifactId> <version>0.0.1-SNAPSHOT</version> <name>project name</name> <dependencyManagement> <dependencies> <dependency> <groupId>org.junit</groupId> <artifactId>junit-bom</artifactId> <version>5.3.1</version> <type>pom</type> <scope>import</scope> </dependency> </dependencies> </dependencyManagement> <dependencies> <dependency> <groupId>org.junit.jupiter</groupId> <artifactId>junit-jupiter-engine</artifactId> <scope>test</scope> </dependency> <dependency> <groupId>org.junit.platform</groupId> <artifactId>junit-platform-launcher</artifactId> <scope>test</scope> </dependency> <dependency> <!-- only required when using parameterized tests --> <groupId>org.junit.jupiter</groupId> <artifactId>junit-jupiter-params</artifactId> <scope>test</scope> </dependency> </dependencies> </project>
Как видите, теперь вам нужно обновить версию только в одном месте, если вы хотите обновить JUnit. Кроме того, номер версии платформы не должен появляться (в совместимой версии) где-либо в вашем POM, он автоматически управляется посредством
junit-bom
импорта.источник
Я использую:
Spring Tool Suite 4 Версия: 4.4.2.RELEASE Идентификатор сборки: 201911201053 Версия Java: 1.8.0_191
и отображается сообщение: Тесты не найдены с средством запуска тестов 'JUnit5'
у меня сработала конфигурация ниже
<properties> <java.version>1.8</java.version> <junit-jupiter.version>5.5.2</junit-jupiter.version> <junit-platform.version>1.5.2</junit-platform.version> </properties> <dependency> <groupId>org.junit.jupiter</groupId> <artifactId>junit-jupiter-engine</artifactId> <version>${junit-jupiter.version}</version> <scope>test</scope> </dependency> <dependency> <groupId>org.junit.platform</groupId> <artifactId>junit-platform-launcher</artifactId> <version>${junit-platform.version}</version> <scope>test</scope> </dependency>
источник
Вам не хватает средства запуска платформы JUnit 5 с группой: 'org.junit.platform', имя: 'junit-platform-launcher'
Просто добавьте в ur POM:
источник
Та же ошибка, с которой я столкнулся в версии Eclipse Oxygen.3a Release (4.7.3a). Существует проблема несоответствия зависимостей Maven. Чтобы решить эту проблему, я обновил свой Pom.xml со следующими зависимостями.
http://maven.apache.org/xsd/maven-4.0.0.xsd "> 4.0.0 com.netapp.junitnmactiopractice JunitAndMactioPractice 0.0.1-SNAPSHOT
<properties> <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> <java.version>1.8</java.version> <junit.jupiter.version>5.1.1</junit.jupiter.version> <junit.platform.version>1.1.1</junit.platform.version> </properties> <build> <plugins> <plugin> <artifactId>maven-compiler-plugin</artifactId> <version>3.1</version> <configuration> <source>${java.version}</source> <target>${java.version}</target> </configuration> </plugin> </plugins> </build> <dependencies> <dependency> <groupId>org.junit.jupiter</groupId> <artifactId>junit-jupiter-engine</artifactId> <version>${junit.jupiter.version}</version> </dependency> <dependency> <groupId>org.junit.platform</groupId> <artifactId>junit-platform-runner</artifactId> <version>${junit.platform.version}</version> <scope>test</scope> </dependency> </dependencies>
источник
junit-platform-runner
: « Средство выполнения для выполнения тестов и наборов тестов на платформе JUnit в среде JUnit 4. »Вы можете использовать только в
junit-jupiter
качестве тест - зависимость , а неjunit-jupiter-api
,junit-platform-launcher
,junit-jupiter-engine
.<dependency> <groupId>org.junit.jupiter</groupId> <artifactId>junit-jupiter</artifactId> <version>5.5.2</version> <scope>test</scope> </dependency>
источник
Для меня я настроил путь сборки, чтобы добавить библиотеку JUnit 5, а также добавив зависимость
<dependency> <groupId>org.junit.platform</groupId> <artifactId>junit-platform-launcher</artifactId> <version>1.1.0</version> <scope>test</scope> </dependency>
отдельно.
источник
Я столкнулся с этой проблемой и с Eclipse (версия: 2019-12 (4.14.0)). Решение, похоже, либо использует IntelliJ, либо тест Maven для запуска таких тестов в Eclipse.
источник
На самом деле я использовал spring-tool-suite-4-4.5.1, и у меня была эта ошибка, когда я хотел запустить тестовый класс. и решение заключалось в том, чтобы добавить к 'java build path', 'junit5' в библиотеках java build path img
источник
ты должен изменить
@Test public static void testmethod(){}
к
@Test public void testmethod(){}
@Test - это неподдерживаемый статический метод
источник
Я столкнулся с той же ошибкой, и в моем случае это был простой вопрос: перейти
Project Properties > Maven > Update project
и / или очистить и перестроить проект.источник
Просто добавил свой Test.class через меню eclipse и работал. Щелкните правой кнопкой мыши, чтобы проект -> Создать -> Другое -> JUnit -> Тестовый пример JUnit
источник
Это может быть вызвано версией junit-platform-launcher / junit-platform-runner.
1.1.0 не работает
1.4.1 работает в моей настройке.
Я думаю, что это ошибка в eclipse, поскольку он работает с библиотеками более высоких версий junit, а не с другой версией.
Это решило мою проблему. Другое решение показалось мне менее осуществимым или рискованным. Спасибо.
источник
Когда я изменил свою версию api jupiter на последнюю, это было решено. Между тем, мой eclipse и другие ide расширений eclipse (например, STS) получают ошибку пути сборки. Для каждого обновления maven ide вынуждает меня устанавливать системную библиотеку JRE.
источник