Cucumber Java新手上路(2)- java环境配置,工程建立及初步应用
首先分享两个链接地址,一个是乙醇分享的cucumber框架jar包,一个是我分享的cucumber框架jar包云盘http://pan.baidu.com/s/1pJjA4SN
http://pan.baidu.com/s/1o7cUSye
配置好cucumber测试框架之后,配置电脑的Java环境(去问度娘)
建立文件夹及目录结构:
---cucumber_java
|---features 放置cucumber自然语言测试用例的文件夹,该文件夹中的文件以.feature结尾
|---implementation 放置java中一些工具类或外部调用类的文件夹,该文件夹中的文件以.java和.class结尾
|---jars 放置jar包的文件夹,比如一些外部工具jar包,cucumber测试框架的java jar包就放在这个文件夹下
|---step_definitions 放置java测试用例的文件夹,内容与features理论上对应
目录图例如下:
好了,到此测试工程建立完毕
使用命令行运行一下工程:
在工程根目录输入:java -cp "./jars/*" cucumber.api.cli.Main features
得到结果:
No features found at
0 Scenarios
0 Steps
0m0.000s
如图:
目前只建立了工程目录,还没有任何的源码文件,接下来写一个feature文件
feature文件中描述的就是自然语言的测试用例,可以使大家都可以看懂
在features目录下,新建java_test.feature:
Feature: Test Jave cucumber use scene 5+6=11
Scenario: test java cucumber sum
Given I input a number 5
And input other number 6
When Calculation of two numbers sum
Then result is 11
[*]Feature:用来描述我们需要测试的功能
[*]Scenario: 用来描述测试场景
[*]Given: 前置条件
[*]When: 描述测试步骤
[*]Then: 断言
[*]And:描述与上述关键字同级别的另一个操作
再次运行工程,得到如下结果:
1 Scenarios(1 undefined)
4 Steps(4 undefined)
0m0.000s
You can implement missing steps with the snippets below:
@Given("^I input a number (\\d+)$").........
意思是说有1个Scenario,4个step没有定义;
这说明我们的feature文件创建成功了,但是只有自然语言测试用例是无法完成的,需要使用编程语言来实现对自然语言测试用例的方法,
按照系统中的提示去写,在step_definitions文件夹中新建sum.java:
package step_definitions;
import cucumber.api.*;
import cucumber.api.java.en.*;
import static org.junit.Assert.*;
import org.junit.*;
public class sum {
int a;
int b;
int c;
@Test
@Given("^I input a number (\\d+)$")
public void number(int number) throws Throwable {
a = number;
}
@Test
@And("^input other number (\\d+)$")
public void other(int other) throws Throwable{
b = other;
}
@Test
@When("^Calculation of two numbers sum$")
public void sum() throws Throwable {
c = a+b;
}
@Test
@Then("^result is (\\d+)$")
public void result(int result) throws Throwable {
assertEquals(result,c);
}
}
在工程根目录下运行:javac -cp "./jars/*;." step_definitions\*.java 对java文档进行编译
在运行:java -cp "./jars/*;." cucumber.api.cli.Main -g step_definitions features 重新运行该工程
得到如下结果:
1 Scenarios(1 passed)
4 Steps(4 passed)
说明测试用例运行成功
特别说明:在代码中@Given,@And,@When,@Then,使用的是 import cucumber.api.java.en.*; 下的方法,当初找这个包用了很大的功夫
而标注后括号中的内容,与feature文件中的自然语句一致,已 ("^ 开头,已$")结尾,数字部分用 (\\d+)代替,
如,feature: Given I input a number 5
sum.java: @Given("^I input a number (\\d+)$")
这是告诉@Givne之后的代码块,我要执行Given I input a number 5这样一个操作,而操作传参就是5
其实整个过程总很难过,系统关注三个部分,“Given”,“5”,和“I input a number”
Given是执行的前置条件,条件内容为5,而 I input a number 这句其实想写什么都行,系统不会关注这部分的语法,只要feature与java代码中的内容保持一致即可
页:
[1]