Возникает проблема при добавлении тестовых файлов в путь к тестовой папке /industries-access-propagation-impl/test/unit/java/src/strictunit/accesspropagation/logger/. Я вижу сообщение “Java файл находится вне корня модуля, поэтому он не будет скомпилирован“, и тестовые файлы не компилируются.
вставьте описание изображения здесь
вставьте описание изображения здесь
Я добавил директорию в .bazelproject. Где еще это нужно добавить, чтобы получить запись для тестовых файлов (/industries-access-propagation-impl/test/unit/java/src), чтобы они компилировались?
Я попробовал щелкнуть правой кнопкой мыши на папке src и выбрать “Отметить директорию как” -> “Корень исходников” или “Корень тестовых источников”. Но эти изменения не сохраняются, когда я выполняю bazel sync или bazel build (в командной строке), и тестовые файлы исключаются. Я добавил записи в /core-app/members.bzl. Что я упустил, чтобы скомпилировать тестовые файлы?
Ответ
Для решения проблемы с компиляцией тестовых файлов в Bazel, когда вы видите сообщение "Java file is located outside of module source root, so it won’t be compiled", необходимо выполнить несколько шагов, чтобы обеспечить правильную настройку вашего проекта.
-
Проверка структуры папок: Убедитесь, что структура вашей папки соответствует ожиданиям Bazel. Важно, чтобы тестовые файлы находились в правильно структурированном каталоге. В вашем случае путь
/industries-access-propagation-impl/test/unit/java/src
должен корректно отображаться в структуре проекта Bazel. -
Обновление
.bazelproject
: Убедитесь, что вы добавили правильные пути в файл.bazelproject
. Например, если ваш путь к тестовым файлам –/industries-access-propagation-impl/test/unit/java/src
, он должен быть правильно указан:srcs = [ "industries-access-propagation-impl/test/unit/java/src", ]
После обновления этого файла выполните команду
bazel sync
для применения изменений. -
Создание
BUILD
файла: Для того чтобы Bazel знал о ваших тестах, необходимо создать файлBUILD
в папке, содержащей тестовые файлы. Например, в папке/industries-access-propagation-impl/test/unit/java/src
создайте (или откройте) файлBUILD
и добавьте в него следующие строки:java_test( name = "YourTestName", srcs = glob(["**/*.java"]), deps = [ "//path/to/dependencies", # Укажите зависимости, если они есть ], )
Замените
YourTestName
на желаемое имя вашего теста и добавьте все необходимые зависимости. -
Проверка настроек модуля в IDE: Если вы используете IDE, такую как IntelliJ IDEA, убедитесь, что у вас правильно настроены корни исходного кода и тестов. Попробуйте очистить настройки и заново пометить корневые папки. Если изменения не сохраняются после выполнения
bazel sync
илиbazel build
, возможно, проблема связана с конфигурацией IDE. -
Проверка конфигурации
members.bzl
: Вы упомянули, что внесли изменения вmembers.bzl
. Убедитесь, что добавленные изменения корректны и соответствуют требованиям. Проверьте на наличие ошибок в синтаксисе и логике. - Запуск сборки: После выполнения вышеуказанных шагов попробуйте снова выполнить сборку с помощью команды:
bazel build //industries-access-propagation-impl/test/unit/java/src:YourTestName
Заметьте, что
YourTestName
должен совпадать с именем вашего теста, указанным вBUILD
файле.
Если после выполнения этих шагов у вас все еще возникают проблемы, попробуйте перезапустить IDE и проверить, существует ли что-то в логах, что может указывать на другие потенциальные проблемы.