您的位置:软件测试 > 开源软件测试 > 开源单元测试工具 > junit
单元测试利器JUnit
作者:网络转载 发布时间:[ 2013/3/29 14:59:08 ] 推荐标签:

Java代码 复制代码

    package com.ai92.cooljunit;  
     
    import java.util.regex.Matcher;  
    import java.util.regex.Pattern;  
     
    /** 
     * 对名称、地址等字符串格式的内容进行格式检查 
     * 或者格式化的工具类 
     *  
     * @author Ai92 
     */ 
    public class WordDealUtil {  
     
        /** 
         * 将Java对象名称(每个单词的头字母大写)按照 
         * 数据库命名的习惯进行格式化 
         * 格式化后的数据为小写字母,并且使用下划线分割命名单词 
         *  
         * 例如:employeeInfo 经过格式化之后变为 employee_info 
         *  
         * @param name  Java对象名称 
         */ 
        public static String wordFormat4DB(String name){  
            Pattern p = Pattern.compile("[A-Z]");  
            Matcher m = p.matcher(name);  
            StringBuffer sb = new StringBuffer();  
              
            while(m.find()){  
                m.appendReplacement(sb, "_"+m.group());  
            }  
            return m.appendTail(sb).toString().toLowerCase();  
        }  
    } 

     它是否能按照预期的效果执行呢?尝试为它编写 JUnit 单元测试代码如下:

Java代码 复制代码

    package com.ai92.cooljunit;  
     
    import static org.junit.Assert.assertEquals;  
    import org.junit.Test;  
     
    public class TestWordDealUtil {  
        //测试wordFormat4DB正常运行的情况  
        @Test public void wordFormat4DBNormal(){  
            String target = "employeeInfo";  
            String result = WordDealUtil.wordFormat4DB(target);  
              
            assertEquals("employee_info", result);  
        }  
    } 

     很普通的一个类嘛!测试类 TestWordDealUtil 之所以使用“Test”开头,完全是为了更好的区分测试类与被测试类。测试方法 wordFormat4DBNormal 调用执行被测试方法 WordDealUtil.wordFormat4DB,以判断运行结果是否达到设计预期的效果。需要注意的是,测试方法 wordFormat4DBNormal 需要按照一定的规范书写:

    测试方法必须使用注解 org.junit.Test 修饰。
测试方法必须使用 public void 修饰,而且不能带有任何参数。
    测试方法中要处理的字符串为“employeeInfo”,按照设计目的,处理后的结果应该为“employee_info”。assertEquals 是由 JUnit 提供的一系列判断测试结果是否正确的静态断言方法(位于类 org.junit.Assert 中)之一,我们使用它将执行结果 result 和预期值“employee_info”进行比较,来判断测试是否成功。

    看看运行结果如何。在测试类上点击右键,在弹出菜单中选择 Run As JUnit Test。运行结果如下图所示:

图3 JUnit 运行成功界面

    绿色的进度条提示我们,测试运行通过了。但现在宣布代码通过了单元测试还为时过早。记住:您的单元测试代码不是用来证明您是对的,而是为了证明您没有错。因此单元测试的范围要全面,比如对边界值、正常值、错误值得测试;对代码可能出现的问题要全面预测,而这也正是需求分析、详细设计环节中要考虑的。显然,我们的测试才刚刚开始,继续补充一些对特殊情况的测试:

Java代码 复制代码

    public class TestWordDealUtil {  
        ……  
        //测试 null 时的处理情况  
        @Test public void wordFormat4DBNull(){  
            String target = null;  
            String result = WordDealUtil.wordFormat4DB(target);  
              
            assertNull(result);  
        }  
          
        //测试空字符串的处理情况  
        @Test public void wordFormat4DBEmpty(){  
            String target = "";  
            String result = WordDealUtil.wordFormat4DB(target);  
              
            assertEquals("", result);  
        }  
     
        //测试当首字母大写时的情况  
        @Test public void wordFormat4DBegin(){  
            String target = "EmployeeInfo";  
            String result = WordDealUtil.wordFormat4DB(target);  
              
            assertEquals("employee_info", result);  
        }  
          
        //测试当尾字母为大写时的情况  
        @Test public void wordFormat4DBEnd(){  
            String target = "employeeInfoA";  
            String result = WordDealUtil.wordFormat4DB(target);  
              
            assertEquals("employee_info_a", result);  
        }  
          
        //测试多个相连字母大写时的情况  
        @Test public void wordFormat4DBTogether(){  
            String target = "employeeAInfo";  
            String result = WordDealUtil.wordFormat4DB(target);  
              
            assertEquals("employee_a_info", result);  
        }  
    } 

上一页123456下一页
软件测试工具 | 联系我们 | 投诉建议 | 诚聘英才 | 申请使用列表 | 网站地图
沪ICP备07036474 2003-2017 版权所有 上海泽众软件科技有限公司 Shanghai ZeZhong Software Co.,Ltd