2017-07-27 101 views
0

我有一個黃瓜和fluentlenium項目,當我運行CucumberRunner時不啓動。它只是跳過所有的測試。我試圖找到一個在互聯網上的解決方案,但到目前爲止還沒有發現問題。有一點幫助會很好。Fluentlenium和黃瓜測試不開始

這是我的步驟:

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 { 

} 

回答

0

發現了example project這可能對您有很好的幫助。

雖然我已經克隆/運行這個示例項目,但是黃瓜版本很舊,需要更新。

這是我做了什麼,使該項目的工作:

更新fluentlenium-cucumberfluentlenium-assertj3.3.0cucumber-corecucumber-junitcucumber-javacucumber-picocontainer1.2.5以及junithtmlunit-driverpom.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 { 

} 

新的測試結果:

enter image description here

希望你得到它的工作!

+0

你使用了什麼版本的黃瓜? –

+0

似乎是示例項目中的黃瓜舊版本。將調查/更新示例項目並回復給您。 –

+0

我試過你的方案,它的工作原理,但在我的情況下,它並不是因爲我不能在@Before中調用getDriver(),因爲它在運行時爲null。我想覆蓋newWebDriver()方法並設置驅動程序而不是Before,因爲我只想運行一次。當我的其他測試運行時,調用之前將再次初始化驅動程序。 –

1

你的黃瓜亞軍被稱爲CucumberRunner

這如果你建立使用Maven可能是一個問題。 Maven的testrunner,Surefire搜索名爲XXXXTestTestXXXX的類。你的亞軍班將不會被找到。

嘗試將您的黃瓜轉輪重命名爲CucumberRunnerTest,看看它是否可以解決問題。