Junit使用简明手册

上传人:cn****1 文档编号:468196365 上传时间:2023-12-02 格式:DOC 页数:27 大小:158KB
返回 下载 相关 举报
Junit使用简明手册_第1页
第1页 / 共27页
Junit使用简明手册_第2页
第2页 / 共27页
Junit使用简明手册_第3页
第3页 / 共27页
Junit使用简明手册_第4页
第4页 / 共27页
Junit使用简明手册_第5页
第5页 / 共27页
点击查看更多>>
资源描述

《Junit使用简明手册》由会员分享,可在线阅读,更多相关《Junit使用简明手册(27页珍藏版)》请在金锄头文库上搜索。

1、JUnit是什么?JUnit是一个开发源代码的Java测试框架,用于编写和运行可重复的测试。他是用于单元测试框架体系xUnit的一个实例(用于java语言)。它包括以下特性:1、用于测试期望结果的断言(Assertion)2、用于共享共同测试数据的测试工具3、用于方便的组织和运行测试的测试套件4、图形和文本的测试运行器JUnit最初是由Erich Gamma(GoF之一)和Kent Beck(xp和refactor的先驱之一)编写的.需要说明的是junit一般是用来进行单元测试的,因此需要了解被测试代码的内部结构(即所谓的白盒测试),另外junit是在xp编程和重构 (refactor)中被极

2、力推荐使用的工具,因为在实现自动单元测试的情况下可以大大的提高开发的效率,但是实际上编写测试代码也是需要耗费很多的时间 和精力的,那么使用这个东东好处到底在哪里呢?笔者认为是这样的:1、对于xp编程而言,要求在编写代码之前先写测试,这样可以强制你在写代码之前好好的思考代码(方法)的功能和逻辑,否则编写的代码很不稳定,那么你需 要同时维护测试代码和实际代码,这个工作量就会大大增加。因此在xp编程中,基本过程是这样的:构思编写测试代码编写代码测试,而且编写测试 和编写代码都是增量式的,写一点测一点,在编写以后的代码中如果发现问题可以较块的追踪到问题的原因,减小回归错误的纠错难度2、对于重构而言,其

3、好处和xp编程中是类似的,因为重构也是要求改一点测一点,减少回归错误造成的时间消耗。3、对于非以上两种情况,我们在开发的时候使用junit写一些适当的测试也是有必要的,因为一般我们也是需要编写测试的代码的,可能原来不是使用的 junit,如果使用junit,而且针对接口(方法)编写测试代码会减少以后的维护工作,例如以后对方法内部的修改(这个就是相当于重构的工作了)。另 外就是因为junit有断言功能,如果测试结果不通过会告诉我们那个测试不通过,为什么,而如果是想以前的一般做法是写一些测试代码看其输出结果,然后再 由自己来判断结果使用正确,使用junit的好处就是这个结果是否正确的判断是它来完成

4、的,我们只需要看看它告诉我们结果是否正确就可以了,在一般情况下 会大大提高效率。JUnit入门cherami 整理安装JUnit安装很简单,先到以下地址下载一个最新的zip包:http:/ 环境变量中,对于IDE环境,对于需要用到的junit的项目增加到lib中,其设置不同的IDE有不同的设置,这里不多讲。如何使用JUnit写测试?最简单的范例如下:1、创建一个TestCase的子类:package junitfaq;import java.util.*;import junit.framework.*;public class SimpleTest extends TestCase publ

5、ic SimpleTest(String name) super(name);2、写一个测试方法断言期望的结果:public void testEmptyCollection() Collection collection = new ArrayList();assertTrue(collection.isEmpty();注意:JUnit推荐的做法是以test作为待测试的方法的开头,这样这些方法可以被自动找到并被测试。3、写一个suite()方法,它会使用反射动态的创建一个包含所有的testXxxx方法的测试套件:public static Test suite() return new Te

6、stSuite(SimpleTest.class);4、写一个main()方法以文本运行器的方式方便的运行测试:public static void main(String args) junit.textui.TestRunner.run(suite();5、运行测试:以文本方式运行:java junitfaq.SimpleTest通过的测试结果是:.Time: 0OK (1 tests)Time上的小点表示测试个数,如果测试通过则显示OK。否则在小点的后边标上F,表示该测试失败。每次的测试结果都应该是OK的,这样才能说明测试是成功的,如果不成功就要马上根据提示信息进行修正了。如果JUnit

7、报告了测试没有成功,它会区分失败(failures)和错误(errors)。失败是你的代码中的assert方法失败引起的;而错误则 是代码异常引起的,例如ArrayIndexOutOfBoundsException。以图形方式运行:java junit.swingui.TestRunner junitfaq.SimpleTest通过的测试结果在图形界面的绿色条部分。以上是最简单的测试样例,在实际的测试中我们测试某个类的功能是常常需要执行一些共同的操作,完成以后需要销毁所占用的资源(例如网络连接、数据库连接, 关闭打开的文件等),TestCase类给我们提供了setUp方法和tearDown方法

8、,setUp方法的内容在测试你编写的TestCase子类的 每个testXxxx方法之前都会运行,而tearDown方法的内容在每个testXxxx方法结束以后都会执行。这个既共享了初始化代码,又消除了各 个测试代码之间可能产生的相互影响。JUnit最佳实践Martin Fowler说过:“当你试图打印输出一些信息或调试一个表达式时,写一些测试代码来替代那些传统的方法。”一开始,你会发现你总是要创建一些新的 Fixture,而且测试似乎使你的编程速度慢了下来。然而不久之后,你会发现你重复使用相同的Fixture,而且新的测试通常只涉及添加一个新的测试 方法。你可能会写许多测试代码,但你很快就会

9、发现你设想出的测试只有一小部分是真正有用的。你所需要的测试是那些会失败的测试,即那些你认为不会失败的测试,或你认为应该失败却成功的测试。我 们前面提到过测试是一个不会中断的过程。一旦你有了一个测试,你就要一直确保其正常工作,以检验你所加入的新的工作代码。不要每隔几天或最后才运行测试, 每天你都应该运行一下测试代码。这种投资很小,但可以确保你得到可以信赖的工作代码。你的返工率降低了,你会有更多的时间编写工作代码。不要认为压力大,就不写测试代码。相反编写测试代码会使你的压力逐渐减轻,应为通过编写测试代码,你对类的行为有了确切的认识。你会更快地编写出有效率地工作代码。下面是一些具体的编写测试代码的技

10、巧或较好的实践方法:1. 不要用TestCase的构造函数初始化Fixture,而要用setUp()和tearDown()方法。2. 不要依赖或假定测试运行的顺序,因为JUnit利用Vector保存测试方法。所以不同的平台会按不同的顺序从Vector中取出测试方法。3. 避免编写有副作用的TestCase。例如:如果随后的测试依赖于某些特定的交易数据,就不要提交交易数据。简单的会滚就可以了。4. 当继承一个测试类时,记得调用父类的setUp()和tearDown()方法。5. 将测试代码和工作代码放在一起,一边同步编译和更新。(使用Ant中有支持junit的task.)6. 测试类和测试方法应

11、该有一致的命名方案。如在工作类名前加上test从而形成测试类名。7. 确保测试与时间无关,不要依赖使用过期的数据进行测试。导致在随后的维护过程中很难重现测试。8. 如果你编写的软件面向国际市场,编写测试时要考虑国际化的因素。不要仅用母语的Locale进行测试。9. 尽可能地利用JUnit提供地assert/fail方法以及异常处理的方法,可以使代码更为简洁。10.测试要尽可能地小,执行速度快。Junit使用简明手册在使用XP进行开发的过程,unit test是必不可少的环节。作为unit test,junit是首选的工具。本文从使用目的、如何使用、以及使用中需要考虑的问题,简略描述了junit

12、的基本用法。使用目的junit是java中书写unit test的framework,目前一些流行的unit test工具大都都是在junit上扩展而来的。目前它的版本是junit3.8.1,可以从www.junit.org上下载。用法1. 基本使用步骤,Junit的使用非常简单,它的基本使用步骤:- 创建,从junit.framework.TestCase派生unit test需要的test case- 书写测试方法,提供类似于如下函数签名的测试方法:public void testXXXXX();- 编译,书写完test case后,编译所写的test case类- 运行,启动junit

13、test runner,来运行这个test case。Junit提供了2个基本的test runner:字符界面和图形界面。启动命令分别如下:a 图形界面:java junit.swingui.TestRunner XXXXXb 字符界面:java junit.textui.TestRunner XXXXX2. 使用例子:import junit.frmework.TestCase;public class TestSample extends TestCasetpublic void testMethod1()assertTrue( true);3. setUp与tearDown,这两个函数

14、是junit framework中提供初始化和反初始化每个测试方法的。setUp在每个测试方法调用前被调用,负责初始化测试方法所需要的测试环境;tearDown在每个测试方法被调用之后被调用,负责撤销测试环境。它们与测试方法的关系可以描述如下: 测试开始 - setUp - testXXXX - tearDown -测试结束4. 使用例子:import junit.frmework.TestCase;public class TestSample extends TestCasetprotected void setUp()/初始化public void testMethod1()assertTrue( true);potected void tearDown()/撤销初始化5. 区分fail、exception。- fail,期望出现的错误。产生原因:assert函数出错(如assertFalse(true));fail函数产生(如fail())。- exception,不期望出现的错误,属于unit test程序运行时抛出的异常。它和普通代码运行过程中抛出的runtim

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 大杂烩/其它

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号