2015-09-01 60 views
1

對於任何格式問題或任何違反本網站禮儀的道歉行爲,這是我潛伏了過去幾個月後的第一篇文章,我正在使用的所有內容對我而言都很新穎。如何避免在每次測試之前執行註釋?

我最近開始在Java/Cucumber/JUnit中編寫一些硒測試,並且遇到了一個問題,我無法解決問題。我知道問題是什麼,但無法弄清楚如何改變我的測試來補救它。下面是一些背景資料的:

特徵文件例如:

Feature: Form Submission functionality 

@Run 
Scenario: Submitting the demo form with correct details is succesful 
Given I am on the demo page 
When I submit the demo form with valid information 
Then the thank you page is displayed 

StepDefs文件的例子(我有四個文件這樣,測試站點的不同部分):

package testFiles.stepDefinitions; 

import testFiles.testClasses.formSubmissionFunctionalityTest; 
import cucumber.api.java.en.*; 
import cucumber.api.java.After; 
import cucumber.api.java.Before; 

public class formSubmissionFunctionalityStepDefs { 

    private formSubmissionFunctionalityTest script = new formSubmissionFunctionalityTest(); 

    @Before 
    public void setUpWebDriver() throws Exception { 
     script.setUp(); 
    } 

    @Given("^I am on the demo page$") 
    public void i_am_on_the_demo_page() throws Throwable { 
     script.goToDemoPage(); 
    } 

    @When("^I submit the demo form with valid information$") 
    public void i_submit_the_demo_form_with_valid_information() throws Throwable { 
     script.fillSubmitDemoForm(); 
    } 

    @Then("^the thank you page is displayed$") 
    public void the_thank_you_page_is_displayed() throws Throwable { 
     script.checkThankYouPageTitle(); 
    } 

    @After 
    public void tidyUp() { 
     script.tearDown(); 
    } 
} 

我那麼也有一個formSubmissionFunctionalityTest.java文件,它包含所有的方法的實際代碼,如fillSubmitDemoFrom。我也有一個setupTest.java文件,其中有tearDownsetUp之類的方法。

我遇到的問題是每次執行測試時,都會打開4個瀏覽器會話而不是所需的單個瀏覽器。我知道這是因爲@Before和@After註釋在每次測試之前執行,而不是在整個套件之前執行。我認爲最好的解決方案是使用@Before和@After之後創建一個新文件,但這是我無法想象的部分。在每個文件中,script是不同的,這是我認爲問題來自哪裏,但我不完全確定。

有誰知道一種方式我可以重構我的測試,以便他們都共享相同的@Before和@After方法,而不會導致多個瀏覽器會話打開?提前謝謝你

+1

這是你的意思嗎? http://stackoverflow.com/questions/18856458/execute-cucumber-step-before-after-a-specific-feature –

+0

謝謝,但不是真的我以後。我想我正在尋找的解決方案將涉及使用'@ Before'和'@ After'註釋,但要設置不同的類以允許所有測試使用一組註釋,而不是在每個測試類中都有它們,從而導致多重瀏覽器在測試運行時打開 –

回答

0

這個問題不是真正的前後,它是你如何管理WebDriver的實例。一般來說,你需要在單獨的東西里面保存它的一個實例。你可以通過經典的signleton模式來做到這一點,或者你可以通過注射來做到這一點。

我強烈建議您查看The Cucumber for Java Book。它不會解決你將要面對的所有挑戰,但是當你在Java中工作時,它對於Cucumber來說是一本很棒的書。第12章是關於在黃瓜中使用WebDriver並討論使用注入來重用瀏覽器。

相關問題