• 软件测试技术
  • 软件测试博客
  • 软件测试视频
  • 开源软件测试技术
  • 软件测试论坛
  • 软件测试沙龙
  • 软件测试资料下载
  • 软件测试杂志
  • 软件测试人才招聘
    暂时没有公告

字号: | 推荐给好友 上一篇 | 下一篇

Unit测试技巧:如何手动设置待测试Bean的属性

发布: 2008-6-25 15:24 | 作者: 不详 | 来源: 测试时代编辑整理 | 查看: 54次 | 进入软件测试论坛讨论

领测软件测试网

在JUnit测试中,通常作为POJO的Java Bean都是一组简单的getter/setter方法,需要测试的不是这些Bean本身,而是对Bean的属性设置后,测试业务方法是否正常工作,例如,一个注册用户的类方法void register(Account account),需要对传入的Account Bean做初始化设置,然后,根据业务规则决定register方法是否应该执行成功或者抛出IllegalArgumentException。
 
倘若按照常规的Unit测试,需要考虑用户输入的许多种组合,在testXxx()方法中编写模拟用户输入的代码是冗长而繁琐的,不如直接通过Swing窗口手动设置Bean的属性,然后再执行业务方法,这样,虽然引入了输入界面,需要人工干预测试过程,却大大简化了编写测试用例的麻烦。
 
在TCK测试中,对许多UI组件的测试正是采用这种半自动的方法,因为只有测试人员本身才能看到UI测试的结果正确与否,计算机很难判断一个类似fillRect()的方法到底有没有在屏幕上正确绘制出来。
 
基于这种思想,为了测试许多种不同输入的组合,我们决定编写一个能根据Bean的属性自动生成输入窗口的小工具,以便在Unit测试过程中,能够由测试人员手动设定Bean的属性和期望的结果,然后,继续测试。
 
为了实现这个目的,我们设计了一个小工具,它能够实现:
 
1.根据传入的Bean自动为每个public setXxx()方法生成输入框;
 
2.由测试人员手动设置Bean的属性,然后,选择“Success”,“Failure”以决定这次测试的数据应该产生正确或错误的结果。
 
3.可以连续多次循环测试,直到测试人员点击“End”,结束本次测试。
 
整个工具被封装在一个BeanInputDialog类中,它继承自JFrame,只暴露了一个public static方法。下面,我们以一个Account Bean为例,测试用户输入的属性是否合法。
 
Account定义了4个字段和一个validate()方法来验证输入,如果不符合输入,validate()方法会抛出IllegalArgumentException。我们编写一个简单的TestCase:
 
package com.crackj2ee.test.util;
import junit.framework.TestCase;
public class AccountTest extends TestCase {
    public void testAccount() {
        int expect;
        for(;;) {
            Account account = new Account(); // 待测试的Bean
            expect = BeanInputDialog.inputBean(account); // 用户在此输入
            // 注意:直到用户输入完成,inputBean()方法才会返回,它是一个同步方法
            // inputBean()方法返回一个int,表示本次测试的期望值
            if(expect==BeanInputDialog.EXPECT_END) // 期望测试结束,退出循环
                break;
            if(expect==BeanInputDialog.EXPECT_SUCCESS) { // 期望测试成功
                account.validate();
            }
            if(expect==BeanInputDialog.EXPECT_FAILURE) { // 期望测试失败
                try {
                    account.validate();
                    fail("Not catch IllegalArgumentException!"); // 没有捕获到预期的异常
                }
                catch(IllegalArgumentException e) {
                    // OK!捕获到预期的异常
                }
            }
        }
    }
}

延伸阅读

文章来源于领测软件测试网 https://www.ltesting.net/

TAG: bean 技巧 设置 属性 Bean Unit

21/212>

关于领测软件测试网 | 领测软件测试网合作伙伴 | 广告服务 | 投稿指南 | 联系我们 | 网站地图 | 友情链接
版权所有(C) 2003-2010 TestAge(领测软件测试网)|领测国际科技(北京)有限公司|软件测试工程师培训网 All Rights Reserved
北京市海淀区中关村南大街9号北京理工科技大厦1402室 京ICP备10010545号-5
技术支持和业务联系:info@testage.com.cn 电话:010-51297073

软件测试 | 领测国际ISTQBISTQB官网TMMiTMMi认证国际软件测试工程师认证领测软件测试网