2016-10-17 39 views
0

有沒有辦法從方案大綱字符串列表轉換成一個對象,例如:如何字符串列表轉換從方案大綱對象

Scenario Outline: eligibility rules 
    When I specify habitation details 
     | <you_are> | <nature> | <pro> | 

Examples: 
     | you_are| nature | pro | 
     | PNO | Living | No | 
     | PO | Pro | yes | 

分爲:

class Entry { 
    String you_are; 
    String nature; 
    String pro ; 
} 

@When("I specify habitation details") 
    public void specifyHabitationDetails(Entry entry) { 

我知道你可以傳遞一個使用數據表的對象列表,但這不是我想要的。場景大綱的優點是每條線都從清潔狀態重新排列。

+0

爲什麼你需要在這裏轉換?黃瓜使用REGEX來識別這些測試用例,因爲你可以在測試中建立一個類;我不認爲你嘗試這樣做的方式是正確的。 – px06

回答

1

您可以重複使用DataTable for ScenarioOutline示例的登錄名。例子表中的每一行都會像你說的那樣乾淨。

修改您的功能和步驟定義以使用DataTable。標題應該與您的Entry類中的變量名稱相匹配,以便Cucumber自動創建該對象,並在Entry類中提供3參數構造函數。

When I specify habitation details 
| you_are | nature | pro | 
| <you_are> | <nature> | <pro> | 

例子部分保持不變...

@When("I specify habitation details") 
    public void specifyHabitationDetails(List<Entry> entry) { 

      Entry e = entry.get(0); 
    } 
+0

謝謝,這個作品! 唯一的問題是,我得到一個列表與一個元素。然後我必須entry.get(0)來獲取我的對象。 有沒有辦法直接得到實際的對象?總是隻有一個對象是列表。 – loonis

+1

默認情況下,DataTable會查找多行數據。如果您直接希望Entry對象嘗試使用傳遞給要素文件中的步驟的分隔字符串進行破解。 - 當我指定居住詳情 @ @。修改你的stepDefinition - public void specifiedHabitationDetails(Entry entry)。在Entry類中使用分隔字符串作爲參數創建單個參數構造函數。放置邏輯來初始化變量。黃瓜會自動調用這個構造函數並給你Entry對象。 – Grasshopper

相關問題