Шаги Cucumber Test не отображаются в J-Unit, хотя шаги в консоли успешно выполнены

В настоящее время я пытаюсь создать свои первые тесты Cucumber. В Java Eclipse я создал «файл функций» со следующим содержимым:

Feature: Login functionality DemoQA.com

Scenario: Verify if user is able to login to the DemoQA website
    Given A user is on DemoQA.com
    When User clicks MyAccount link
    Then User is taken to Login Page
    When User enters valid username and password
    Then User is able to login 

Я также создал следующий файл testrunner:

@RunWith(Cucumber.class)
@CucumberOptions(   
        features = "src/test/Features/",
        glue = {"Tests"}
        )
public class CucumberRunner {
}

Я также создал свои Stepdefinitions:

открытый класс LoginStepDefinitions {

@Given("A user is on DemoQA.com")
public void a_user_is_on_DemoQA_com() {

     System.setProperty("webdriver.gecko.driver","C:\\geckodriver-v0.10.0-win64\\geckodriver.exe");

         WebDriver driver = new FirefoxDriver();
         WebDriverWait wait = new WebDriverWait(driver, 50);

         String url = "https://demoqa.com";

            //Launch the Online Store Website
            driver.get(url);

try {

            wait.until(ExpectedConditions.visibilityOfElementLocated(By.xpath("//*[@id=\"logo-events\"]/a/img")));   
            driver.findElement(By.xpath("//*[@id=\"logo-events\"]/a/img"));
            System.out.println("User has succesfully opened DemoQA.com");

             } 

catch (Exception e) {
            System.out.println("User was not able to open DemoQA.com");

            }

}

@When("User clicks MyAccount link")
public void user_clicks_MyAccount_link() {
    // Write code here that turns the phrase above into concrete actions
    System.out.println("User clicks on the MyAccount link");
}

@Then("User is taken to Login Page")
public void user_is_taken_to_Login_Page() {
    System.out.println("User is succesfully taken to MyAccount login");
}

@When("User enters valid username and password")
public void user_enters_valid_username_and_password() {
    System.out.println("User enters valid credentials for MyAccount login");
}

@Then("User is able to login")
public void user_is_able_to_login() {
    // Write code here that turns the phrase above into concrete actions
    System.out.println("User is succesfully logged in");
}

}

Когда я запускаю свой скрипт как тест Junit, консоль успешно выполняет тест и показывает результат:

User has succesfully opened DemoQA.com
[32m.[0mUser clicks on the MyAccount link
[32m.[0mUser is succesfully taken to MyAccount login
[32m.[0mUser enters valid credentials for MyAccount login
[32m.[0mUser is succesfully logged in
[32m.[0m
1 Scenarios ([32m1 passed[0m)
5 Steps ([32m5 passed[0m)
0m7.706s

Но при открытии вкладки JUnit происходят две вещи:

1) Тестовые шаги не отображаются:

enter image description here

2) Когда я дважды щелкаю шаги Feature / Scenario, я получаю сообщение:

Тестовый класс не найден в выбранном проекте

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

Это моя текущая структура в Eclipse:

enter image description here

Кто-нибудь может мне помочь, пожалуйста? Спасибо!

Я сам решил проблему, добавив следующую строку в @cucumberoptions моего файла Runner: junit = "--step-notifications" . После добавления этой строки в файл запуска мои тестовые шаги также появляются в результатах Junit. Вопрос можно закрыть

WesCo 23.05.2019 08:28

Вы можете принять свой ответ на этот вопрос

Marit 30.05.2019 14:48

@Marit Спасибо, что сообщили мне. Я неправильно разместил свой ответ, поэтому я не мог правильно пометить его как ответ. Теперь это делается правильно. Спасибо!

WesCo 31.05.2019 14:30
Основы программирования на Java
Основы программирования на Java
Java - это высокоуровневый объектно-ориентированный язык программирования, основанный на классах.
Концепции JavaScript, которые вы должны знать как JS программист!
Концепции JavaScript, которые вы должны знать как JS программист!
JavaScript (Js) - это язык программирования, объединяющий HTML и CSS с одной из основных технологий Всемирной паутины. Более 97% веб-сайтов используют...
2
3
3 635
4
Перейти к ответу Данный вопрос помечен как решенный

Ответы 4

Ответ принят как подходящий

Я сам решил проблему, добавив следующую строку в @cucumberoptions моего файла Runner: junit = "--step-notifications" . После добавления этой строки в файл запуска мои тестовые шаги также появляются в результатах Junit. Вопрос можно закрыть

Ответ 'junit = "--step-notifications"' в @CucumberOptions у меня не сработал. Но, к счастью, я нашел решение сразу.

@CucumberOptions
(
    features="path to feature file",

    glue="path to step definition file",

    stepNotifications = true
)

'junit = "--step-notifications"' в @CucumberOptions у меня тоже не сработало.

Я сделал это:

@CucumberOptions(
stepNotifications = true,
strict = true,
features="path to feature file",
glue="path to step definition file")

и его работа. Мои тестовые шаги также появились в результатах Junit.

strict = true -- для подавления Варинга :

Это значение по умолчанию изменится на --strict, а --non-strict будет удалено. Вы можете использовать --strict или @CucumberOptions(strict = true), чтобы подавить это предупреждение.

«строгий» теперь используется по умолчанию, и этот параметр устарел.

MiB 13.07.2021 01:27

Добавьте приведенный ниже код в TestRunner, и вы увидите включенные уведомления о шагах.

@CucumberOptions(features="src/test/java/features", glue={"stepDefinitions"}, stepNotifications=true)

Другие вопросы по теме