Получение сценария и шагов, неопределенных в cucumber с java

#java #selenium #junit #cucumber

#java #selenium #junit #cucumber

Вопрос:

Я боролся с этим уже 2 дня. Показано, что мой тест пройден, но тест не выполняется в cucumber java для Selenium webdriver test. В консоли я получаю следующее сообщение

 1 Scenarios (1 undefined)
4 Steps (4 undefined)
0m0.000s


You can implement missing steps with the snippets below:

@Given("^User navigate to shopping page$")
public void user_navigate_to_shopping_page() throws Throwable {
    // Write code here that turns the phrase above into concrete actions
    throw new PendingException();
}

@When("^user enters data$")
public void user_enters_data() throws Throwable {
    // Write code here that turns the phrase above into concrete actions
    throw new PendingException();
}

@When("^clicks on search button$")
public void clicks_on_search_button() throws Throwable {
    // Write code here that turns the phrase above into concrete actions
    throw new PendingException();
}

@Then("^product should be displayed$")
public void product_should_be_displayed() throws Throwable {
    // Write code here that turns the phrase above into concrete actions
    throw new PendingException();
}
  

Я написал следующий класс runner

 package stepDefinition;
import org.junit.runner.RunWith;

import cucumber.api.CucumberOptions;
import cucumber.api.junit.Cucumber;


@RunWith(Cucumber.class)
@CucumberOptions(
        monochrome=true,
        features = "src/main/resources/feature",
    glue="src/test/java/stepDefinition",
    tags={"@tag2"},
    dryRun = false)
public class TestRunner {   
}
  

Я также приложу скриншот структуры каталогов проекта

и файл функций является

 [![Feature: Checking Functionality
This is a demo test

@tag2
Scenario: Test Login
    Given User navigate to shopping page
    When user enters data
    And clicks on search button
    Then product should be displayed
  

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

Комментарии:

1. Вы пытались переместить feautures в ветку / test?. Также в IntelliJ вы можете настроить параметры модуля и пометить папки test и code, есть ли что-то подобное в Eclipse?

2. Я пытался перемещать тестируемые функции, но безрезультатно: ( Я не уверен в вашем втором вопросе

Ответ №1:

Способ, которым вы задали значение glue, неверен. Вы должны предоставить в формате пакета java. Попробуйте glue = "stepDefinition" вместо этого.

Если у вас был пакет внутри вашего текущего пакета stepDefinition, давайте скажем, steps, который содержит код. Затем glue становится "stepDefinition.steps"

Вы должны переместить свои функции в папку test resources.

Ответ №2:

У меня возникла та же проблема, и я попробовал исправления, представленные в комментариях, наряду с вышеупомянутым исправлением есть еще одна область, на которую следует обратить внимание, это класс step definiton. просматривая мое определение шага, я заметил, что после символа ^ есть дополнительные пробелы .Я удалил пробелы, и тест прошел успешно.

Ниже был мой код, когда я получил проблему.Я удалил пробел после символа cap (^)

@Given("^ I open (.*)$")

Комментарии:

1. Очень хорошо, это была моя проблема! Трудно найти руководство, в котором говорится, что оно должно быть точно таким же в обоих местах.

Ответ №3:

Вы пытаетесь решить сложную проблему. То есть вы пытаетесь исправить то, что никогда не работало.

Мой подход состоял бы в том, чтобы начать с чего-то, что сработало, а затем преобразовать это рабочее решение до тех пор, пока оно не будет поддерживать ваш вариант использования. Я бы сделал это очень маленькими шагами, если я не уверен в том, что делать.

Рабочей отправной точкой является Java skeleton, предоставленный командой Cucumber. Клонировать / загрузить его можно здесь: https://github.com/cucumber/cucumber-java-skeleton

Комментарии:

1. Я могу успешно выполнить файл функций, но не файл Runner, на котором я застрял в настоящее время

Ответ №4:

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

Я столкнулся с аналогичной проблемой при попытке установить универсальные отношения с моими пакетами, например (comCucumber.feature, comCucumber.step и comCucumber.runner).

Поверьте, это было бы полезно.

Большое спасибо

Ответ №5:

Если не получается ввести шаги в конфигурацию, отключите плагин Cucumber, попробуйте это. Для проекта Maven или Gradle: щелкните правой кнопкой мыши на pom.xml и выберите Rebuild Module или Build Module или нажмите ctlr-shift-F9 Для меня работает хорошо!

Для Gradle нажмите на черепаху 🙂

Ответ №6:

Привет, храните класс stepdefinition и класс test runner в одном пакете

Комментарии:

1. Таким образом, вы можете увидеть, как он запускается в первый раз.. когда ничего не работает, это работает.. этой штукой с клеем очень сложно управлять