feature文件大部分是文本,還有一小部分機(jī)器可讀的標(biāo)記元素。由相應(yīng)的測試代碼使用正則表達(dá)式去解析場景的文本。
feature文件也可以由你們團(tuán)隊(duì)使用的語言來本地化。這對(duì)于不習(xí)慣用英語的人來說很有幫助。
feature需要真正的代碼來執(zhí)行,所以需要用某種方式去將feature綁定到代碼。
你需要一個(gè)帶有某些注解的測試類讓Cucumber司以和JUnit -起工作
@RunWith (Cucumber.class)
@Cucumber.Options (
glue = "matangle . glue . manageUser" ,
features = " features/manageUser . feature " ,
format= (”pretty", "html: target/Cucumber‘‘}
在這個(gè)例子中,按照約定,Cucumbei測試類名都有個(gè)Step的后綴。
現(xiàn)在你需要把測試方法和feature場景綁定在一起,并且從feature描述中解析出參數(shù),傳給測試方法。Java的Cucumber版本基本上都是用注解實(shí)現(xiàn)的。這些注解對(duì)應(yīng)于feature文件中使用的關(guān)鍵字:
@Given ( " .+a user with the name ' ( .+) I ")
public void addUser (String name) {
在這個(gè)用例中,不同的輸入保存在成員變量中,直到整個(gè)用戶界面事務(wù)準(zhǔn)備完畢。操作的順序取決于feature文件中實(shí)現(xiàn)的順序。
為了證明Cucumber可以有不同的實(shí)現(xiàn),本書的源碼包中還有一個(gè)Clojure的例子。
到目前為止,我們已經(jīng)明白,需要Selenium的一些類庫和Cucumber去運(yùn)行測試
Cucumber的feature描述和我們的測試代碼類綁定在一起。