51Testing软件测试论坛

标题: Cucumber Java新手上路(3)- JUnit断言 [打印本页]

作者: 随尘    时间: 2016-2-19 20:28
标题: Cucumber Java新手上路(3)- JUnit断言
一个简单的求和场景设计OK了,那我们试一下对这个内容进行断言,验证我们的代码错误时的现象

比如我们讲sum.java中的sum()方法中的a+b修改成a*b

@Test
@When("^Calculation of two numbers sum$")                                                      
public void sum() throws Throwable {                           
     c = a*b;
}      


重新编译,并运行工程
得到如下结果:
[attach]100082[/attach]
说明断言时抛错了,并提示了相应的错误位置,就是sum.java中的断言位置

接下来在写一个登陆的“场景”:
在java_test.feature文件中追加如下内容:
Scenario: test user login a web page
        Given user input username abcdefg
        And input password higklmn
        When click login button
        Then login is success


[attach]100083[/attach]

在implementation中新建user.java文件,模拟数据库存储内容:
package implementation;

public class user{
        private String username = "abcdefg";
        private String password = "higklmn";
       
       
        public void setUsername(String name){
                username = name;
        }
        public String getUsername(){
                return username;
        }
       
        public void setPassword(String word){
                password = word;
        }
        public String getPassword(){
                return password;
        }
       
}


在step_definitions文件夹中新增login.java文件:
package step_definitions;

import cucumber.api.java.zh_cn.*;
import cucumber.api.*;
import cucumber.api.java.en.*;
import static org.junit.Assert.*;
import org.junit.*;
import implementation.*;

public class login{
        user u = new user();
       
        String t_username;
        String t_password;
       
        boolean isSuccess = false;
       
        @Test
    @Given("^user input username (.*)$")
    public void number(String username) throws Throwable {  
                t_username = username;
    }
       
        @Test
        @And("^input password (.*)$")
        public void other(String password) throws Throwable{
                t_password = password;
        }
       
        @Test
    @When("^click login button$")                                                      
    public void sum() throws Throwable {
                if(t_username.equals(u.getUsername())){
                        if(t_password.equals(u.getPassword())){
                                isSuccess = true;
                        }
                }
               
    }      
       
    @Test       
    @Then("^login is success$")                                                   
    public void result() throws Throwable {  
       
                assertTrue("username or password is error",isSuccess);
    }
       
}


保存后编译并运行,这里偷个懒,写了个批处理 run.bat:
javac -cp "./jars/*;." step_definitions\*.java implementation\*.java
java -cp "./jars/*;." cucumber.api.cli.Main -g step_definitions features
pause


运行结果:
[attach]100084[/attach]
都运行正确了,如果是输入错误呢,比如我们将java_test.feature文件中输入的密码修改成aaaa1111


再次运行结果:
[attach]100085[/attach]

ok,又报错了,我突然留意到在求和计算和登陆错误这两个场景报错的视乎,有这么一个东西:
[attach]100086[/attach]

好吧,猜也能才出来,这个是提示你在feature文件中,那些步骤执行成功了,那些步骤执行失败了,可能这个没有ruby搭建的cucumber框架界面交互好看,不过谁让咱不懂ruby呢

作者: shirleyxyli    时间: 2016-8-22 18:35
请问楼主,run.bat是写些什么内容呢




欢迎光临 51Testing软件测试论坛 (http://bbs.51testing.com/) Powered by Discuz! X3.2