2017-08-10 42 views
0

我有兩個名爲「X」和「Y」(許多其他)的場景 在測試場景「Y」之前,我需要運行場景「X」並將場景「X」的結果返回到場景「Y」。我應該怎麼做?如何在cucumber java測試中使用之前或後臺場景返回的結果?

我已經試過2個選項 1:我已創建的背景情況爲X,但我無法從這樣的背景情況下X返回結果的情況Y. 2:我一直在使用掛鉤註釋之前也試過。

(PS:我知道,同時測試所有的測試用例應該是相互獨立的)

回答

0

也許最簡單的方法是將兩個步驟在同一個班,然後使用類的實例變量。

public class SomeSteps { 
    private List<String> betweenStepsList; 

    @When("^I initialize a list in one step$") 
    public void iInitializeAListInOneStep() { 
    betweenStepsList = new ArrayList<String>(Arrays.asList("Peter","Piper","picked","a","peck","of","pickled","peppers")); 
    } 

    @Then("^I can access that list in a following step$") 
    public void iCanAccessThatListInAFollowingStep() { 
    System.out.println("Elements are:" + betweenStepsList); 
    } 
} 

編輯 你說過兩個場景。當我面對這個問題時,我總是找到一種方法將場景合併爲一個。

您可以在第一種情況下將中間結果寫入文件,然後在第二種情況下讀取它們。我從來不打算自己做這件事,但有很多關於如何讀寫文件的教程。這裏是針對Java的one。 Ruby或Python(你沒有指定)寫入然後讀取文件的例子也很容易獲得。

只要兩個方案都在同一個特徵文件中,並行執行就沒有問題。

+0

這不起作用。步驟實例類是在每個場景之間重新創建的。但是,在後臺場景中使用第一步時,它會起作用。 – mpkorstanje

+0

你是對的。將情景合併成一個情景在我的方法中是如此根深蒂固,以至於我沒有說明它。 – MikeJRamsey56

相關問題