Тесты на флюентение и огурец не начинаются
У меня есть проект с огурцом и флюентлением, который не запускается, когда я запускаю CucumberRunner. Он просто пропускает все тесты. Я пытался найти решение в интернете, но до сих пор не выяснил проблему. Немного помощи было бы неплохо.
Это мои шаги:
public class LoginPageSteps extends BaseTest {
public LoginPageSteps() throws Exception {
super();
}
@Page
LoginPage loginPage;
@Given("^I am on login page$")
public void goToLoginPage(){
goTo(loginPage);
}
@When("^I enter username as '(.*?)'$")
public void enterUsername(String username) {
waitAndFill(loginPage.username, username);
}
@And("^I enter password as '(.*?)'$")
public void enterPassword(String password) {
waitAndFill(loginPage.password, password);
waitUntilCliclableAndClick(loginPage.loginButton);
}
@Then("^Login should be succesfull$")
public void checkLoginStatus() {
assertTrue(getDriver().getCurrentUrl().contains("login_attempt=1"));
}
}
Это мой BaseTest.class:
public class BaseTest extends FluentCucumberTest {
@Page
AccountPage accountPage;
@Before
public void before(Scenario scenario) {
super.before(scenario);
}
@After
public void after(Scenario scenario) {
super.after(scenario);
}
@Override
public WebDriver newWebDriver() {
System.setProperty("webdriver.gecko.driver", "../cucumber-test/src/test/resources/geckodriver.exe");
FirefoxDriver driver = new FirefoxDriver();
return driver;
}
public void waitUntilCliclableAndClick(FluentWebElement element) {
await().atMost(5, TimeUnit.SECONDS).until(element).clickable();
element.click();
}
public void waitAndFill(FluentWebElement element, String data) {
await().atMost(5, TimeUnit.SECONDS).until(element).displayed();
element.fill().with(data);
}
}
И это мой файл функций:
Feature: valid-login
Scenario:
Given I am on login page
When I enter username as "myusername"
And I enter password as "mypassword"
Then Login should be succesfull
И это бегун:
@RunWith(Cucumber.class)
@CucumberOptions(features={"src/test/resources/features"})
public class CucumberRunner {
}
2 ответа
Ваш бегун с огурцами называется CucumberRunner
Это может быть проблемой, если вы строите с использованием Maven. Тестируемый в Maven, Surefire, ищет классы с именем XXXXTest
или же TestXXXX
, Ваш класс бегуна не будет найден.
Попробуйте переименовать вашего бегуна огурца в CucumberRunnerTest
и посмотрим, решит ли это проблему.
Нашел этот пример проекта, который может быть полезен для вас.
Хотя я клонировал / запускал этот пример проекта, версия огурца была старой и нуждалась в обновлении.
Вот что я сделал, чтобы проект работал:
обновленный fluentlenium-cucumber
, fluentlenium-assertj
в 3.3.0
, cucumber-core
, cucumber-junit
, cucumber-java
, cucumber-picocontainer
в 1.2.5
так же как junit
а также htmlunit-driver
до последних версий в pom.xml
,
Файл шага выглядит так:
import cucumber.api.Scenario;
import cucumber.api.java.After;
import cucumber.api.java.Before;
import cucumber.api.java.en.Given;
import org.fluentlenium.adapter.cucumber.FluentCucumberTest;
import org.openqa.selenium.htmlunit.HtmlUnitDriver;
import static org.assertj.core.api.Assertions.assertThat;
import java.util.concurrent.TimeUnit;
public class BasicStep extends FluentCucumberTest {
@Before
public void before(Scenario scenario) {
}
@Override
public WebDriver newWebDriver() {
System.setProperty("webdriver.gecko.driver", "path/to/geckodriver");
WebDriver driver = new FirefoxDriver();
return driver;
}
@Given("I open Google")
public void iOpenGoogle() {
this.initFluent(new newWebDriver());
goTo("http://google.com");
await().atMost(5, TimeUnit.SECONDS);
assertThat(window().title()).contains("Google");
}
@After
public void after(Scenario scenario){
super.after(scenario);
}
}
И тестовый файл:
import cucumber.api.CucumberOptions;
import cucumber.api.junit.Cucumber;
import org.junit.runner.RunWith;
@RunWith(Cucumber.class)
@CucumberOptions(features = "src/test/resources/toto")
public class BasicTest {
}
Новый результат теста:
Надеюсь, у вас все получится!