環(huán)境搭建
- jdk 1.8 以上版本
- maven 3.3 以上版本
項(xiàng)目結(jié)構(gòu)
本項(xiàng)目是以java+maven+junit作為cucumber的驅(qū)動(dòng)框架
最簡單的目錄結(jié)構(gòu)大概是這樣子的:
目錄結(jié)構(gòu)
-
src\main
:存放一些與cucumber無關(guān)的代碼图焰,主要用于輔助測試的,比如一些測試數(shù)據(jù)準(zhǔn)備等等锐借。 -
src\test\java
:存放step的定義類和testsuit類藻雌,該目錄下沒有結(jié)構(gòu)和命名規(guī)定,可以隨意定義。 -
src\test\resources
:存放feature文件。 - 注意:如果step定義文件放在
src\test\java\features
下,那feature文件一定要放在src\test\resources\features
路徑下寿桨,否則將報(bào)Undefined step
的錯(cuò)誤。
依賴的包
-
pom.xml
要添加如下3個(gè)依賴:
<dependency>
<groupId>info.cukes</groupId>
<artifactId>cucumber-java</artifactId>
<version>${cucumber.version}</version>
</dependency><dependency>
<groupId>info.cukes</groupId>
<artifactId>cucumber-junit</artifactId>
<version>${cucumber.version}</version>
</dependency>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>${junit.version}</version>
</dependency>
cucumber用例寫法
LoginTest.feature的寫法:
Feature: 登錄
"""
這是一個(gè)栗子
"""
Scenario: 作為一個(gè)已注冊的用戶,輸入正確的賬號和密碼能正常登錄
Given 存在用戶賬號為 13800138000 强戴,密碼為 12345678
When 用賬號 13800138000 亭螟,密碼 12345678 登錄
Then 返回結(jié)果為 登錄成功-
Stepdefs.java的寫法,里面的方法名可以隨意定義:
package features;import com.gateway.DataFactory; import com.gateway.UserProto; import cucumber.api.java.en.Given; import cucumber.api.java.en.Then; import cucumber.api.java.en.When; import org.assertj.core.api.Assertions; /** * Created by wuwx on 2016/8/6. */ public class Stepdefs { String loginResult = null; @Given("^存在用戶賬號為 (\\S*) 骑歹,密碼為 (\\S*)$") public void hasUser(String phone, String password) throws Throwable { DataFactory df = new DataFactory(); df.createUser(phone, password); } @When("^用賬號 (\\S*) 预烙,密碼 (\\S*) 登錄$") public void login(String phone, String password) throws Throwable { loginResult = UserProto.login(phone, password).getDescription().getContent(); } @Then("返回結(jié)果為 (\\S*)") public void checkResult(String expect) throws Throwable{ Assertions.assertThat(loginResult).isEqualTo(expect); } }
-
RunLoginTest.java的寫法,方法名可以隨意定義道媚,features屬性需要定義該testsuit想要執(zhí)行的features文件的路徑:
package features;
import cucumber.api.CucumberOptions;
import cucumber.api.junit.Cucumber;
import org.junit.runner.RunWith;/** * Created by wuwx on 2016/8/6. */ @RunWith(Cucumber.class) @CucumberOptions(monochrome = true, features = "src/test/resources/features/") public class RunLoginTest{ }
運(yùn)行測試
- 運(yùn)行單個(gè)用例
-
運(yùn)行單個(gè)用例扁掸,可以直接選中某個(gè)feature文件,右鍵run:
運(yùn)行單個(gè)用例 -
測試結(jié)果可以在控制臺看到最域,如果失敗了谴分,會列出詳細(xì)情況:
測試結(jié)果
- 運(yùn)行一個(gè)testsuit
-
可以直接選中某個(gè)RunLoginTest文件,右鍵run镀脂,即可運(yùn)行
運(yùn)行testsuit
- 運(yùn)行整個(gè)項(xiàng)目牺蹄,并生成總體的測試報(bào)告
- 生成報(bào)告,需要在RunLoginTest.java里面添加一些plugin屬性薄翅,"html:target/cucumber-report/"指定生成的html報(bào)告路徑:
@CucumberOptions(monochrome = true,
features = "src/test/resources/features/",
plugin ={"pretty",
"html:target/cucumber-report/",
"json:target/cucumber-report/cucumber.json"
}) - 配好了之后沙兰,執(zhí)行IDE的maven插件test,或者在命令行下執(zhí)行
mvn clean test
即可
*報(bào)告如下圖翘魄,綠色是通過鼎天,其他顏色是不通過
cucumber原生html報(bào)告