2015-04-18 132 views
1

我正在使用Cucumber比較Java中的DataTables。如果發現不匹配,它將拋出TableDiffException。Java黃瓜數據表使用黃瓜差異比較()

例如:

dataTable1.unorderedDiff(dataTable2)

我只是想知道是否有什麼辦法可以只打印錯配列一旦異常被拋出,因爲它是非常困難的比較由於數據表大小相當大(10行和20列),因此在記錄後手動記錄數據數據。

回答

1

我認爲這是一個相當不錯的例外: 爲特色 @DevTag 特點:基本測試功能

Scenario: Scenario1 
Given i do this 
When i do that 
|a|a| 
|b|b| 
|c|c| 
Then i expect something 
|a|a| 
|b|c| 
|c|c| 

然後你會得到異常:

cucumber.runtime.table.TableDiffException: Tables were not identical: 
    | a | a | 
- | b | b | 
    | c | c | 
+ | b | c | 

但這裏是一種方法來改變:

try { 
    one.unorderedDiff(two); 
} catch (Tablee) { 
    String s = e.toString(); 
    s.split("\n"); 
    for(String elem: s.split("\n")){ 
     if(elem.trim().startsWith("+")){ 
      System.out.println(elem); 
    } 
    } 

} 

正如你所看到的,可以捕捉到這個異常,然後你就可以使用它。我將它分成每行,然後只打印錯誤的行。

如果您願意,您可以拋出一個新的異常,其中只包含帶有錯誤行的消息。

這對你有幫助嗎?如果不能隨意發表評論