Junit使用说明之二---Junit3.x的测试环境初始化以及收尾工作
来源:互联网 发布:股票数据 开放api 编辑:程序博客网 时间:2024/05/21 10:45
看到这个标题,很多人可能会疑惑。首先我来解释一下,什么叫测试环境初始化,它是指:在进行测试之前,将必要的数据进行准备。收尾则是对资源进行回收等操作。比如我们以I/0为例,假如现在有N个方法,然后以不同的文件对文件进行读取,打印其中的内容,并确定耗时,以完成这几种方式效率的对比。每次开始前,我们要得到系统当前时间,测试完以我们也要打印当前时间。这时,我们当然也可以在每个测试方法,开始和结束的地方进行打印,但是如果这些方法的个数很多,每个测试方法我们都要去修改,是不是很麻烦列? 那么这个时候你想到了什么? 面向切面编程AOP?是吗?
假如,每个测试方法在执行前都是会先执行一个指定的方法,在执行完毕后又会执行另外一个指定的方法,我们是不是就会省事列?还是那句话:你永远不会是第一个发现问题的。所以Junit提供了这种功能。
怎么做列?那就是重写TestCase的setUp()和tearDown()。setUp()进行的也就是我这里说的:初始化工作,而tearDown()进行的则是,我这里说的收尾工作。还是基于昨天的那个例子,假设我们要在测试开始前打印一句话,测试后,又打印一句话,该怎么写?来我们看代码说话:
import junit.framework.TestCase;public class MyTestCase extends TestCase{@Overrideprotected void setUp() throws Exception {// TODO Auto-generated method stubSystem.out.println("befor test ....");}@Overrideprotected void tearDown() throws Exception {// TODO Auto-generated method stubSystem.out.println("after test");}public void testAddition(){assertEquals(5,MathTool.addition(2, 3));}}
Run as Junit 一下,看打印结果:
befor test ....after test
那么现在有一个问题,假设我们有个多测试方法,那么setUp()和tearDown()会执行多少次列?让我们稍微修改一下代码,加多一个测试方法。修改后的代码如下:
import junit.framework.TestCase;public class MyTestCase extends TestCase{@Overrideprotected void setUp() throws Exception {// TODO Auto-generated method stubSystem.out.println("befor test ....");}@Overrideprotected void tearDown() throws Exception {// TODO Auto-generated method stubSystem.out.println("after test");}public void testAddition(){assertEquals(5,MathTool.addition(2, 3));}public void testMoreTest(){System.out.println("这是第二个测试");}}
再Run as Junit一下,看下测试结果:
befor test ....after testbefor test ....这是第二个测试after test
现在应该一目了然吧,每个测试方法执行前,和执行都,Junit都会给你进行初始化工作和收尾工作。这样在很大程度上减轻了,我们代码书写量,有些同学可能会问,他是怎么实的列? 对不起,我滑看源码,我也不想去看,但凭经验来说,应该是反射+代理来实现。 至于具体怎么实现的,有兴趣的同学可以自己看源码,至于我,宁愿当他是个奇妙的事。
关于TestSuit 在第一章中已经提及过,我没打算讲它。有兴趣的朋友可能自己查一下。至此,对3.x的介绍我想应该就划上一个句号。在接下来的一章开始,将讲解Junit4.0的新特性-----纯POJO的,基于注解的测试用例。
- Junit使用说明之二---Junit3.x的测试环境初始化以及收尾工作
- junit学习(二)--junit3.8对测试类执行
- JUnit测试框架之JUnit3和JUnit4使用区别的总结
- Junit 学习之路一 junit3与junit4的区别
- JUnit3.8的Junit单元测试.
- Junit3.X 初学(二)
- Junit3的测试方法(虽然已经过时,但更容易了解Junit的内部机制)
- Android测试之旅之JUnit(二)
- Junit3.X 初学 (四) 如何测试类的静态Static方法
- 非常实用的Junit3与Junit4 测试 以及两者平滑过渡(高兼容性)实例代码
- 测试实践:Eclipse 之 JUnit(二)
- 测试实践:Eclipse 之 JUnit(二)
- Junit - Android测试之旅(二)
- Junit学习之路二--搭建环境
- 项目收尾阶段需要进行的工作
- ANT:与Junit的整合(一):Junit3
- junit3测试spring下的service层
- junit3测试spring下的service层
- 用IntroSpector操作JavaBean
- ASP.NET公有六种验证控件
- 风云的银光志Silverlight4.0教程之打印报表和图形
- 你的“重叠IO”是真正异步的吗?
- 十九、tr
- Junit使用说明之二---Junit3.x的测试环境初始化以及收尾工作
- BCB调用dll文件中注意的问题
- 什么时候应该用到友元类
- 参考《风云的银光志Silverlight4.0教程之打印报表和图形》实现
- linux命令之 ln链接文件
- 转:18个基于HTML5 Canvas开发的图表库
- [置顶]opencv图像处理3--opencv下使用滑动条
- windbg 使用
- 在线摄像头