我有一个黄瓜和fluentlenium项目,当我运行CucumberRunner时,它不会启动。它只是跳过了所有的测试,.I试图在互联网上找到解决方案,但到目前为止还没有解决问题。一点帮助就好了。
以下是我的步骤:
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 {
}发布于 2017-07-29 21:55:00
你的黄瓜跑步者叫做CucumberRunner
如果您使用Maven构建,这可能是一个问题。Maven中的testrunner Surefire搜索名为XXXXTest或TestXXXX的类。将找不到您的runner类。
尝试将您的Cucumber runner重命名为CucumberRunnerTest,看看它是否解决了问题。
发布于 2017-07-27 21:48:34
我找到了这个example project,它可能对你有帮助。
虽然我已经克隆/运行了这个示例项目,但cucumber版本很旧,需要更新。
以下是我为使该项目正常工作所做的工作:
已将fluentlenium-cucumber、fluentlenium-assertj到3.3.0、cucumber-core、cucumber-junit、cucumber-java、cucumber-picocontainer到1.2.5以及junit和htmlunit-driver更新到pom.xml中的最新版本。
Step文件如下所示:
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 {
}新的测试结果:

希望你能让它工作起来!
https://stackoverflow.com/questions/45350815
复制相似问题