» 您尚未 登录   注册 | 社区服务 | FTP中心 | 帮助 | 社区 | 无图版 | 测试百科  | 测试Blog 
软件测试基地论坛 -> 测试开发技术 -> [Study JUnit] 跟我一步一步学JUnit 5
 XML   RSS 2.0   WAP 

--> 本页主题: [Study JUnit] 跟我一步一步学JUnit 5 加为IE收藏 | 收藏主题 | 上一主题 | 下一主题
Fastpoint


该用户目前不在线
级别: 总版主
精华: 44
发帖: 5033
基地声望: 390 点
基地币: 1687 Bug
基地贡献: 0 点
好评度: 15 点
在线时间:818(小时)
注册时间:2005-10-08
最后登录:2008-07-22
查看作者资料 发送短消息 推荐此帖 引用回复这个帖子

[Study JUnit] 跟我一步一步学JUnit 5

构建类测试包含着两层意思,第一层代表构建类测试的环境,另一层代表构建类测试驱动以支持自动化日测试,更具体的行为包括:

1. 将所有测试代码保存在单一的地点,让所有测试人员都能从这里获取最新的源代码(以及以前的版本)。
2. 使创建测试驱动简单化,一个良好的测试驱动不会和太多的业务代码耦合。
3. 使测试执行完全自动化,让任何人都可以只输入简单的命令就运行全部的测试。
4. 确保所有人员都可以得到最新、最好的可执行驱动文件。

为了实现日测试,任何测试人员都需要能够很容易地获取全部最新的测试代码,如果要做一次日测试必须跑遍整个项目组,依次询问实现人员有没有更新的测试代码,然后把这些新代码收集起来,再经过复查和二次组装……没有什么比这更糟糕的了。所以类测试环境构建的前提是必须引入配置管理(代码控制),这些配置管理系统通常都具备网络功能,可以让测试人员和实现人员轻松获取最新的测试代码,而且这些配置工具还提供版本管理,这样可以很轻松地得到测试代码在不同的时间、不同的发布基线的各个版本。
所有的测试代码都应该保存在配置管理系统中,包括驱动脚本(TestCase)、测试数据(TestData)、包脚本(TestSuite)等,避免出现驱动脚本得到了控制,但其他一些重要的辅助程序丢失或者残缺不全的现象。

在配置管理系统的同一棵项目源树中,建议类测试代码和业务代码根据不同包管理原则分开,但需形成依次对应的关系,现在NetBeans就自动支持这个功能,不错,哈哈。

现在我们回来看看类CRC的实现:

原CRC定义为循环冗余码校验,英文名称为Cyclical Redundancy Check。它是利用除法及余数的原理来作错误侦测(Error Detecting)的。实际应用时,发送装置计算出CRC值并随数据一同发送给接收装置,接收装置对收到的数据重新计算CRC并与收到的CRC相比较,若两个CRC值不同,则说明数据通讯出现错误。

其实在上面的两个例子类中,最好能被CRC的是ShoppingCart ,Product 是个实物类不牵涉特殊的方法和构造,所以我们这里针对ShoppingCart 做CRC检查,看看它的哪部分被测试最有价值。

addItem()属于主体业务方法测试跑不了,removeItem()同样属于主体业务方法,getItemCount()和empty()同样属于潜在业务方法价值不如主体业务方法高,ProductNotFoundException属于异常测试,看个人感觉了,我觉得这样的类价值是最高的。getBalance() 方法特殊点个人认为可以跟addItem()主体业务方法一起测试,所以按照类测试价值如下排列:


NO.1 ProductNotFoundException
NO.2 addItem()、removeItem()
NO.3 getItemCount()、empty()
NO.4 getBalance()



这样测试代码可以这么写:

public class ShoppingCartTest extends TestCase {
 
  private ShoppingCart cart;
  private Product book1;
 
  protected void setUp() {
   
    cart = new ShoppingCart();//创建购物车实例
   
    book1 = new Product("Pragmatic Unit Testing", 29.95);//创建物品实例01
   
    cart.addItem(book1);
  }
 
  public void testEmpty() {//清除购物车
   
    cart.empty();
 
    assertEquals(0, cart.getItemCount());
  }

  public void testAddItem() {//测试购物车增加物品
   
    Product book2 = new Product("Pragmatic Project Automation", 29.95);
    cart.addItem(book2);//创建物品实例02

    assertEquals(2, cart.getItemCount());
   
    double expectedBalance = book1.getPrice() + book2.getPrice();    
    assertEquals(expectedBalance, cart.getBalance(), 0.0);//顺带测试物品总数量
  }
   
  public void testRemoveItem() throws ProductNotFoundException {//测试购物车移出物品
   
    cart.removeItem(book1);

    assertEquals(0, cart.getItemCount());
  }
 

  public void testRemoveItemNotInCart() {//测试异常
   
    try {
     
        Product book3 = new Product("Pragmatic Version Control", 29.95);
        cart.removeItem(book3);
     
        fail("Should raise a ProductNotFoundException");
     
    } catch(ProductNotFoundException expected) {
        // successful test
    }
  }
}

该测试类执行结果如下:

....
Time: 0.01

OK (4 tests)

整个测试类测试完成了。


[ 此贴被Fastpoint在2005-10-25 17:21重新编辑 ]


可不可不要这么样徘徊在目光内
你会察觉到我根本寂寞难耐
即使千多百个深夜曾在梦境内
我有吻过你这毕竟并没存在

人声车声开始消和逝
无声挣扎有个情感奴隶
是我多么的想她
但我偏偏只得无尽叹谓

其实每次见你我也着迷
无奈你我各有角色范围
就算在寂寞梦内超出好友关系
唯在暗里爱你暗里着迷
无谓要你惹上各种问题
共我道别吧别让空虚使我越轨
[楼 主] | Posted: 2005-10-24 21:09 顶端
joyce


该用户目前不在线
级别: 助理测试工程师
精华: 2
发帖: 666
基地声望: 155 点
基地币: 7552 Bug
基地贡献: 0 点
好评度: 0 点
在线时间:540(小时)
注册时间:2005-10-06
最后登录:2008-07-16
查看作者资料 发送短消息 推荐此帖 引用回复这个帖子





sunny_w_b@hotmail.com
[1 楼] | Posted: 2006-04-17 11:30 顶端
luciferseye


该用户目前不在线
级别: Cntesting老学员
精华: 0
发帖: 93
基地声望: 20 点
基地币: 57 Bug
基地贡献: 1 点
好评度: 0 点
在线时间:74(小时)
注册时间:2005-11-12
最后登录:2007-06-13
查看作者资料 发送短消息 推荐此帖 引用回复这个帖子



一次看完了~效果不明显~趁着双休日好好研究下~

看这小胡子多赞啊~
^_^
@_@
[2 楼] | Posted: 2006-07-28 13:50 顶端

软件测试基地论坛 -> 测试开发技术




软件测试基地上海测仕信息技术有限公司旗下网站
Copyright © 2005-2007 Cntesting.com, All Rights Reserved
沪ICP备06057721号

Powered by PHPWind Code © 2003-06 PHPWind
Total 0.144972(s) query 5, Time now is:12-04 15:28, Gzip disabled
You can contact us


每日一句:Loading...