Вторичное 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.