2015-08-14 30 views
2

如何將以下不同步驟映射到單個java方法?jbehave步驟名稱中的正則表達式

Then 1st message should be ... 
    Then 2nd message should be ... 
    Then 3rd message should be ... 
    Then 15th message should be ... 

    @Then("$ord(st|nd|rd|th) message should be ...") 
    public void assertMessage(int ord) {...} 

爲什麼(st|nd|rd|th)不工作?

+0

嗯什麼是「ord」在那裏做?也就是嵌入在某種DSL中的正則表達式? – buckley

+0

ord是消息的序號--int參數 –

回答

0

我認爲他們是與Jbehave和Java來實現這一方法有兩種:

1)你加號和(ST之間的空白| ND | RD |日),因此Jbehave可以很容易認出來:

@Then("$var {st|nd|rd|th} message should be ...") 
public void assertMessage(int var) { 
    System.out.println("VAR:"+var); 
} 

所以你的故事是:

Then 1 st message should be ... 
Then 2 nd message should be ... 
Then 3 rd message should be ... 
Then 15 th message should be ... 

2)你讀的數量和註釋和執行字符串函數假設你總是希望刪除的最後兩個字符:

@Then("$var message should be ...") 
public void assertMessage(String var) { 
    int nr = Integer.parseInt(var.substring(0, var.length()-2)); 
    System.out.println("VAR:"+nr); 
} 

,這樣可以保持你的故事,如:

Then 1st message should be ... 
Then 2nd message should be ... 
Then 3rd message should be ... 
Then 15th message should be ... 
0

如果你重寫你的故事只是一點點,那麼這將成爲很容易的。它在步驟名稱中並不需要任何特殊的正則表達式。

Then message 1 should be ... 
Then message 2 should be ... 
Then message 3 should be ... 
Then message 15 should be ... 

@Then("message $ord should be ...") 
public void assertMessage(int ord) {...}