如何抽取一个测试模块?

发表于:2010-1-07 15:00

字体: | 上一篇 | 下一篇 | 我要投稿

 作者:jiangduxi(Javaeye)    来源:51Testing软件测试网采编

分享:

  注意上面的三个测试的第一行几乎是一样的,似乎可以将这个对象移到setUp()方法里。因为testAdd()方法将这个对象叫做added而其他叫 money,首先需要将added相关money以使得三个测试的第一行都一样,然后就可以将这一行移到setUp()方法里去。最后,将money从一个本地变量变成一个实例级的参数域,使得setUp()和所有的测试都可以使用它。接着看看改动后的代码:

1. public class MoneyTest extend TestCase{
2.     private Money money;
3.
4.     protected void setUp()throws Exception{
5.        money = new Money(12,50);
6.     }
7.
8.     public void testAdd(){
9.       Money sum = added.add(augend);
10.       assertEquals(2500,sum.inCents());
11.
12.     }
13.
14.     public void testNegate(){
15.        Money opposite = money.negate();
16.        assertEquals(-1250,opposite.inCents());
17.      }
18.
19.    public void testRound(){
20.       Money rounded = money.roundToNearestDollar();
21.       assertEquals(1300,rounder.inCents());
22.      }
23.
24.   }

  上面这样的做,我们其实在数学中有个概念很好的用来说下:那就是将方程式进行变形然后提取公因式。任何东西都是可以进行检讨和讨论。

  讨论:

  Junit通过方法setUp()和teatDown()提供了对测试模块的支持,可以在junit.framework.TestCase中找到他们。在创建TestCase的子类的时候,可以重载这些方法来为每个测试建立或者销毁测试模块。要了解Junit是如何使用这些方法的,可以查看另一个 TestCase方法runBare()的代码:

1. public void runBare()throws Throwable{
2.      setUp();
3.  try{
4.     runTest();
5.       }
6.  finally{
7.        tearDown();
8.      }
9.  }

  在执行测试的时候,框架会首先调用runBare()方法来设置一个测试模块,运行测试,然后再撤销测试模块。注意将tearDown()放在finally块中,就能保证它一定被执行,即使测试失效,这个方法是为了释放资源,避免资源浪费。

推荐阅读:

如何提取一个测试层次结构

22/2<12
重磅发布,2022软件测试行业现状调查报告~

关注51Testing

联系我们

快捷面板 站点地图 联系我们 广告服务 关于我们 站长统计

法律顾问:上海漕溪律师事务所 项棋律师
版权所有 上海博为峰软件技术股份有限公司 Copyright©51testing.com 2003-2023
投诉及意见反馈:webmaster@51testing.com; 业务联系:service@51testing.com 021-64471599-8017

沪ICP备05003035号

沪公网安备 31010102002173号