Вопрос или проблема
ВНИМАНИЕ: Вы используете устаревший основной класс. Пожалуйста, используйте io.cucumber.core.cli.Main.
Получаю следующую ошибку и не могу ее исправить, следуя решениям в интернете. Может, кто-то поможет
21 сен 2024 20:42:35 cucumber.api.cli.Main run
ПРЕДУПРЕЖДЕНИЕ: Вы используете устаревший основной класс. Пожалуйста, используйте io.cucumber.core.cli.Main
Исключение в потоке "main" java.lang.IllegalArgumentException: путь должен существовать: C:\Users\vsingire\eclipse-workspace\CucumberJava\src\test\resources\HooksDemo\HooksDemo.feature
at io.cucumber.core.resource.PathScanner.findResourcesForPath(PathScanner.java:49)
at io.cucumber.core.resource.PathScanner.findResourcesForUri(PathScanner.java:31)
at io.cucumber.core.resource.ResourceScanner.findResourcesForUri(ResourceScanner.java:61)
at io.cucumber.core.resource.ResourceScanner.scanForResourcesUri(ResourceScanner.java:134)
at io.cucumber.core.runtime.FeaturePathFeatureSupplier.loadFeatures(FeaturePathFeatureSupplier.java:62)
at io.cucumber.core.runtime.FeaturePathFeatureSupplier.get(FeaturePathFeatureSupplier.java:45)
at io.cucumber.core.runtime.Runtime.run(Runtime.java:77)
at io.cucumber.core.cli.Main.run(Main.java:87)
at cucumber.api.cli.Main.run(Main.java:30)
at cucumber.api.cli.Main.main(Main.java:15)
Я пытался запустить файл .feature и получаю эту ошибку. Я скопировал полную папку проекта с моего предыдущего ноутбука. Нужно ли что-то изменить?
Ответ или решение
Конечно, давайте разберем вашу проблему с ошибкой, которую вы получаете при запуске Cucumber.
Основная проблема
Судя по вашему сообщению об ошибке, у вас две проблемы:
-
Использование устаревшего класса Main: Предупреждение о том, что вы используете устаревший класс
cucumber.api.cli.Main
, указывает на то, что библиотека Cucumber была обновлена, и вам необходимо использовать новый классio.cucumber.core.cli.Main
. Это означает, что вам нужно обновить ваш код для запуска тестов так, чтобы он использовал новый класс. -
Отсутствие файла .feature: Второе сообщение (
IllegalArgumentException: path must exist
) говорит о том, что указанный путь к вашему файлуHooksDemo.feature
не существует. Это может произойти по нескольким причинам:- Файл был перемещен или удален.
- Вы указали неправильный путь к файлу.
- Проект не настроен должным образом в вашей новой среде.
Решение проблемы
Шаг 1: Обновление кода запуска
Если у вас есть код, который запускает Cucumber, замените вызовы с использованием cucumber.api.cli.Main
на:
import io.cucumber.core.cli.Main;
public class RunCucumberTests {
public static void main(String[] args) {
String[] cucumberOptions = {
"--plugin", "pretty",
"--glue", "your.step.definitions.package",
"src/test/resources/HooksDemo/HooksDemo.feature"
};
Main.main(cucumberOptions);
}
}
Убедитесь, что вы указываете правильный путь как для --glue
, так и для файла .feature
.
Шаг 2: Проверка пути к файлу .feature
-
Убедитесь, что файл существует: Проверьте, что файл
HooksDemo.feature
действительно находится по указанному пути:C:\Users\vsingire\eclipse-workspace\CucumberJava\src\test\resources\HooksDemo\
. -
Проверьте структуру проекта: Иногда при копировании проекта могут возникать ошибки в структуре каталогов. Убедитесь, что ваша структура файлов соответствует стандартам Maven или Gradle (в зависимости от того, что вы используете).
-
Проверьте настройки IDE: Убедитесь, что ваша среда разработки (Eclipse) правильно настроена и что она видит файл
.feature
. Вы можете попробовать обновить проект (правой кнопкой мыши на проекте → Refresh). - Проверьте конфигурации запуска: Убедитесь, что ваша конфигурация запуска Cucumber правильно настроена и указывает на существующий путь к файлу.
Заключение
После выполнения предложенных действий ваши проблемы должны быть решены. Если вы по-прежнему сталкиваетесь с какими-либо трудностями, попробуйте дать больше информации о вашей структуре проекта или о том, как вы настраиваете запускаемые тесты. Удачи!