cucumber jvm CucumberException: в [] ничего не найдено

В моем огурце -jvm, Maven, junit Setup у меня есть файл testRunner как

package com.lebara.testrunner;

import cucumber.junit.Cucumber;
import org.junit.runner.RunWith;

@RunWith(Cucumber.class)
@Cucumber.Options(

glue = {"com.lebara.stepdefs","com.lebara.framework.main", "com.lebara.testrunner"},
features = "C:/Users/sarthak.dayanand/Documents/WebRefreshTest/CukeAutomation/LebaraWebAutomationTest1/src/main/resources",
format = {"pretty", "html:target/cucumber-html-report", "json-pretty:target/cucumber-report.json"},
tags = {"@UserJourney"}

)
public class RunCukesTest {
}

У меня есть мой файл функций в вышеупомянутом каталоге.

Если я его запустил, то получу следующее исключение:

cucumber.runtime.CucumberException: No features found at [C:/Users/sarthak.dayanand/Documents/WebRefreshTest/CukeAutomation/LebaraWebAutomationTest1/src/main/resources/cucumber]...

Если я удалю опцию «features» в testrunner, он попытается искать файлы функций в том же каталоге, что и мой testrunner.java.

cucumber.runtime.CucumberException: No features found at [com/lebara/testrunner]

И если я помещу туда файлы функций, это сработает.

Мой вопрос в том, почему мой файл функций не выбирается из моего предыдущего местоположения, которое, как я думал, является файловой структурой по умолчанию для настройки cucumber - maven.

Как мне забрать его оттуда? Помощь приветствуется.


person TestAutomationEng    schedule 21.01.2013    source источник


Ответы (8)


Где именно находится ваша программа для запуска тестов и файлы функций? У меня есть следующая настройка, которая отлично работает:

src/test/
    java/
        com/mypackage/
            TestRunner.java
            StepDefinition.java
    resources
        com/mypackage/
            fancy.feature

Согласно соглашениям Maven / Cuke, тесты будут выполняться из каталога tests / java, а файлы функций находятся в каталоге test / resources. Мой тестовый бегун в основном такой же, как ваш, но с меньшим количеством опций:

import cucumber.api.junit.Cucumber;
import org.junit.runner.RunWith;

@RunWith(Cucumber.class)
@Cucumber.Options(format = {"pretty"})
public class TestRunner { }

Надеюсь, это поможет, если вы еще не нашли ответ.

person Doughnuts    schedule 11.02.2013
comment
изменение с .features на .feature исправило это для меня; Благодарность - person ash; 14.01.2015

У меня есть установка, аналогичная вашей (без использования соглашений Maven / Cucumber). В своих параметрах я указываю не путь от корня, а путь от исходной папки проекта, в которой хранятся функции. Это имеет смысл, поскольку в противном случае тесты можно было бы запускать только с вашего компьютера.

В вашем случае, думаю, должно быть:

features = "src/main/resources"
person Tarek    schedule 24.08.2013

Просто добавьте features = {"classpath: features / feature.feature"}, и функция должна находиться в test / resources / features / feature.feature.

    @CucumberOptions(
        format = {"pretty", "html:target/html"},
        features = {"classpath:features/feature.feature"},
        snippets = SnippetType.CAMELCASE

Обратите внимание на путь к классам.

При компиляции кода, если вы используете maven, откройте target / test-classes / features, и вы увидите feature.feature

person Djalas    schedule 30.01.2017

Если вы указываете полный путь к файлу функции, т.е.

"C: /Users/sarthak.dayanand/Documents/WebRefreshTest/CukeAutomation/LebaraWebAutomationTest1/src/main/resources", как в вашем запросе, попробуйте еще раз, заменив символ '/' на '\\' (двойная обратная косая черта), как показано ниже. .

"C: \\ Users \\ sarthak.dayanand \\ Documents \\ WebRefreshTest \\ CukeAutomation \\ LebaraWebAutomationTest1 \\ src \ main \\ resources \\ abc.feature"

person Prakash Gurav    schedule 24.07.2014

Это репозиторий git, в котором используется последняя версия огурца: Пример огурца

Клонируйте это репо и запустите его на своем локальном компьютере. @Given определен, и он должен пройти. @Then и @When должны отображаться как неопределенные.

Вот как должен выглядеть вывод для него: Вывод для функции живота

Используйте указанную структуру: src / test / java/ io /cucumber / {Шаги определений java и запускайте тестовые файлы огурца здесь} src /test / resources/ io/ cucumber / {файлы функций здесь}

Вы можете запустить сборку gradle с помощью ./gradlew clean build и тест огурца с помощью ./gradlew clean test --info

Если это сработает, используйте тот же формат в своем проекте.

person Nandhu Saran    schedule 02.08.2019

Просто изменив тип .F на .f, проблема была решена для меня.

Также убедитесь, что путь к функции правильно указан в CucumberOptions в соответствии с папкой вашей функции.

В некоторых онлайн-руководствах упоминается. Функция, которая вызывает эту проблему

поэтому изменение регистра решит эту проблему

введите здесь описание изображения

person Gaurav Khurana    schedule 27.01.2020

Есть еще один случай, когда возникает ошибка «Функция не найдена». Я публикую решение под этим ответом, поскольку нет аналогичного вопроса.

Я получил эту ошибку при первой попытке запустить файл Runner после настройки проекта Cucumber в Maven. Решение, которое я нашел, было следующим: перейдите в папку, в которой находится файл функции, в проводнике Windows. Проверьте размер файла функций, который вы пытаетесь запустить. Если размер равен «0» КБ, отобразится ошибка «Функция не найдена». Внесите некоторые изменения в файл, пока не отобразится значение больше нуля. После внесения изменений запустить снова.

person Sugat Shivsharan    schedule 04.09.2020

Поместив файл функций в src / test / java, где находится файл бегуна и шагов, или поместив его в src / main / java, проблема будет решена.

Всегда добро пожаловать за спасибо. :)

person MD ABDULLAH    schedule 07.04.2017
comment
Не помещайте тестовый код в src / main. Эта папка обычно содержит код, который идет в производство, и вы не хотите, чтобы тестовый код отправлялся в производство. - person neXus; 26.09.2017