Есть отличная удаленная работа для php+codeception+jenkins+allure+docker спецов. 100% remote! Присоединиться к проекту

TestNG+Cucumber (Java) +Eclipse-> cucumber не видит мои степдефинитион

eclipse
cucumber
testng
java
Теги: #<Tag:0x00007f7b61878de8> #<Tag:0x00007f7b61878c30> #<Tag:0x00007f7b61878a50> #<Tag:0x00007f7b61878910>

(Inessa) #1

Я только начала изучать Cucumber.

  1. .feature file coздала
  2. stepdefinition.java создала
  3. testrunner.java создала
    Eclipse run configuration создала…
    Проблема:
    2 Scenarios (e[33m2 undefinede[0m)
    6 Steps (e[33m6 undefinede[0m)

Running via Eclipse ->cucumber не видит мои степдефинитион и советует “You can implement missing steps with the snippets below:…”
package runner;

import java.io.IOException;

import org.testng.annotations.Test;

import cucumber.api.CucumberOptions;
import cucumber.api.testng.AbstractTestNGCucumberTests;
import cucumber.api.testng.TestNGCucumberRunner;
/*
 * Helper class to provide Cucumber JVM configuration:
 * -how to run feature with TestNG
 */
@Test(groups = "cucumber")
@CucumberOptions(
		plugin={"pretty", "html:target/cucumber-html-report",
				"json:target/cucumber-report.json"},
				dryRun=false,
				features ="src/test/resources/features/",
				glue ="scr/main/java/stepdef/",
				tags="@RunMe")
public class RunCukesTest extends AbstractTestNGCucumberTests {

	  @Test(groups = "cucumber", description = "Runs Cucumber Features")
	  public void run_cukes () throws IOException {

	    new TestNGCucumberRunner(getClass()).runCukes();
	  }
}

--------------------------------------------------------------------
@RunMe

Feature: Load google page

  Scenario: Test Google Search
    Given the user is on Google Home page 
    When user enters 'ifonly.com' as search item
    And user submits search request
    Then ensure search result contains 'IfOnly | Experience Gifts, Unique Experiences with Top ...'

----------------------------------------------------------------------
package stepdef;

import org.junit.Assert;
import org.openqa.selenium.By;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.WebElement;
import org.openqa.selenium.firefox.FirefoxDriver;
import org.testng.annotations.BeforeClass;

import cucumber.api.java.en.And;
import cucumber.api.java.en.Given;
import cucumber.api.java.en.Then;
import cucumber.api.java.en.When;

public class GoogleStepDefs {

	private WebDriver driver;
	
	@BeforeClass
	public void setUp(){
		driver = new FirefoxDriver();

	}
	
	@Given("^the user is on Google Home page$")
	public void user_is_on_google_home_page(){

		driver.get("https://www.google.com/");
	}
	
	@When ("^user enters '([^']+)' as search item$")
	public void user_enters_search_item(String searchItem){
		
		WebElement searchcField=driver.findElement(By.id("lst-ib"));
		searchcField.clear();
		searchcField.sendKeys(searchItem);
		
	}
	
	@And ("^user submits request for search$")
	public void user_submits_search_request(){
		
		driver.findElement(By.name("btnG")).click();
	}
	
	@Then("^ensure search result contains '([^']+)'$")
	public void ensure_search_result_contains(String searchResult){
		
		WebElement searchResultEl = driver.findElement(By.xpath("//a[contains(.,'IfOnly | Experience Gifts, Unique Experiences with Top...')])[1]"));
		
		
		Assert.assertTrue(searchResultEl.isDisplayed()==true);
	}
	
	//@AfterClass
	public void tearDown(){
		
		driver.quit();
	}
}

(Serhii Tanchenko) #2

отформатируйте код пожалуйста, невозможно читать. Ознакомтесь с этим:


(Sergey Korol) #3

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


(Sergey Korol) #4

Эта тема включена в списки и будет отображаться среди других тем.


(Ayarema) #5

Всем привет, увидел незакрытую тему и собственно у самого такой же вопрос и дабы не создавать новое продолжим :slight_smile:

И так стек: #java + #cucumber + #gradle + #junit + и все это в #intellij

Структура проекта:

src/main/java/pageobject/ - объекты с описание страниц
src/main/java/runners/ - объект с описанием запуска фич (БиДиДи все же :slight_smile: )
src/test/java/steps/ - объекты с описанием степдифинишнс
src/test/resources/features/ - а вот тут валяются сами уже фичи на гиркине

Структура раннера вот такая:

@RunWith(Cucumber.class)
@CucumberOptions(
        features = {"src/test/resources"},
        glue = {"steps"}
)
public class RunCukesTest {
}

Т.е. как бы ошибится было сложно… Но, при запуске этого раннера он подхватывает фичи (т.е. таки путь к фичам указан правильно), парсит их и выдает сообщение о том, что у меня не определены степ дифинишны…

И вроде как на винде у меня получалось это все “исправить”, а теперь это на маке, думаю дело не в нем, но для полноты картины не помешает. Прошу помочь, в чем же таки ошибка?

Спасибо!


(Oleksandr Molodetskyi) #6

подниму-ка эту зомби-тему. Та же проблема, что у авторов выше. Путь к степам перепроверил - все верно. В чем может быть проблема? Авторы топика - отзовитесь - как решили проблему?


(Oleksandr Molodetskyi) #7

Нашел как сделать его работающем: вместо полного пути указал только название package где находятся файлы степов и заработало. Но почему не работало - остается загадкой. Вот так glue = {
“/Users/alexander/Documents/workspace/cucumberTest/src/main/java/stepdefinitions” } - не работает. Вот так glue = {“stepdefinitions” } - работает. При этом testRunner находится в другом пакете