Затмение + m2e + junit5 - уже возможно? - PullRequest
0 голосов
/ 14 октября 2018

Попытка получить Eclipse 2018-09 + Патч с поддержкой Java 11 , m2e и junit5 , работающих вместе.

Как рекомендовано в примере junit5-modular-world Я представил второй module-info.java в разделе test / java .

Меня поразила реакция Eclipse:

Я не смог сохранить этот файл после его изменения.Он был сохранен только при закрытии Eclipse.Однако, вновь открывшись, изумленно затмение.Он не может показать какие-либо детали проекта, в котором размещено несколько module-info.java , только имя проекта.

Возможно, Eclipse идентифицирует один проект с одним модулем Java, тогда как mvn test компилирует и выполняет явно другой модуль, чем тот, который был создан mvn install .

Испытал множество вариантов, которые я могу придумать.В настоящее время мне пришлось сдаться и вернуться к junit 4.12.

Знаете ли вы лучшее решение?

1 Ответ

0 голосов
/ 14 октября 2018

Вторичное module-info.java в папке с исходным тестом в настоящее время не поддерживается Eclipse (но его поведение, если вы попытаетесь сделать это, вероятно, должно быть улучшено).

На данный момент вы, вероятно, выиграли 'это вообще не нужно:

Maven помещает зависимости, упомянутые в module-info.java, в путь к модулю, а все остальные (например, зависимости только для тестирования, такие как junit) - в путь к классам, поэтому они становятся частьюненазванного модуля.Когда тесты компилируются, добавляются параметры командной строки, поэтому тестовый код, который обрабатывается как часть модуля в основной исходной папке, по-прежнему может читать безымянный модуль (путем добавления --add-reads modulename=ALL-UNNAMED), поэтому junit виден тестовому коду.

Eclipse Photon и более поздние версии также поддерживают это поведение.

Некоторые сведения о дополнительном тесте module-info.java: maven-compiler-plugin поддерживает это начиная с версии 3.8 (см. https://www.mail-archive.com/announce@maven.apache.org/msg00866.html, реализован в выпуске https://issues.apache.org/jira/browse/MCOMPILER-341),, но я не знаю, был ли выпущен соответствующий плагин maven-surefire-plugin, поэтому я думаю,в настоящее время вы не сможете запускать такого рода тесты с maven.

Реализация поддержки вторичного теста module-info.java в Eclipse может быть возможной, если она является строгим расширенным набором первичных module-info.java в основной папке с исходным кодом, или, возможно, до тех пор, пока они указывают тот же модуль и их содержимое будет объединено, как в инструменте сборки "pro" https://github.com/forax/pro. Но никто не имеетеще работали над этим.

Что, вероятно, никогда не будет поддерживаться в Eclipse, это иметь дополнительный тест module-info.java, который определяет другой модуль, поскольку Eclipse предполагает, что один проект Java принадлежит только одному модулю.Но это не должно иметь значения, поскольку эти тесты могут использовать только открытый и экспортированный код основных источников, поэтому их можно просто поместить в их собственный модуль maven.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...