本文最先发布在我自己的博客[url]http://www.lovestblog.cn[/url],欢迎大家光临,希望我的博客能给大家带来帮助,我会不断更新我的博客,欢迎大家给我提出宝贵的意见,谢谢。
今天说说junit测试技术,其实这个技术大部分人都听过,只是有些人没用过而已,这东西说起来也很容易,但是确实软件开发过程中必不可少的一门技术,对于一些不规范的小公司也许产品的发布不经过测试,但是对于大型的软件开发的时候,这技术往往是必不可少的,因为任何一个小地方出错都可能是一个很难发现的,但是junit技术这个单元测试技术让我们能边开发边测试,使我们的最终产品出错的几率达到最少。
我今天讲的例子,开发环境是myeclipse6.0,在这个开发环境中其实已经集成了我们所要的JUnit测试相关的类,只要我们在环境中设置即可,如下图所示,当我们建立一个java工程之后点击工程属性即按下图所示设置好即可:
[img]/upload/attachment/91144/0d12bb50-0a49-31e3-adc7-11626e5962d9.jpg[/img]
此时我们的工程就把这些Junit的测试相关的类都导进来了,这时就可以开始我们的测试历程了。
我们通常是在src源文件包下写我们的源码,为了保证我们的测试类既能与我们的工程分开又能使我们的项目的测试类编译之后能够与我们的要进行测试的类的编译文件在同一个包下,我们可以在工程中新建一个test源包,但是我们要保证测试类和我们的要测试的类有一样的包路径,例如我们的测试类的相对路径为org.rjb.Calculate,那么我们在test源包下的测试类的路径为org.rjb.CalculateTest,这样一来他们编译之后就在同一个包路径下了,不信你可以试试看噢。
下面我先讲讲一些规则:
测试类名词我们可以定义为被测试类类名+Test来命名(不成文规定);
测试类必须继承自junit.framework.TestCase,它有几个这里需要声明的方法:
1.public void setUp():这个方法是在每个测试方法开始前要调用的方法,也就是说有几个方法要测试,那就要进行几次 调用,在JUnit3.8中只能这样,但是在JUnit4.0中却可以在整个测试过程中只调用一次。
2.public void tearDown():这个方法就和上面的方法相对了,也就是在每个测试方法测试之后调用,调用次数完全和上面的方法相同。
测试类中的方法命名规则为test+被测试方法名,当然要被测试方法名要大写了。也就是说测试方法必须是test开头的,可见找到相应的方法是通过反射来找到的。
考虑到我们能够一次性把所有的测试类都执行,我们可以定义一个测试类,只要继承junit.framework.TestSuite就可以了,此时我们必须有下面方法public static Test suite(),究竟如何使用请看下面的代码展示。
ok,讲了这么多了,会写代码才是硬道理,下面就看代码,希望能给大家帮助:
首先看看我们要进行测试的类Calculate.java:
package org.rjb;public class Calculate { public int add(int a,int b){ return a+b; } public int minus(int a,int b){ return a-b; }}
接着是测试类CalculateTest.java,该类所在的源文件夹为新建的test:
package org.rjb;import junit.framework.Assert;import junit.framework.TestCase;/** * 测试类必须继承TestCase * @author Administrator * */public class CalculateTest extends TestCase{ private Calculate cal; /** * 测试开始前调用的方法 */ public void setUp(){ System.out.println("Begin Test"); cal=new Calculate(); } /** * 测试结束后调用的方法 */ public void tearDown(){ System.out.println("End Test"); } /** * 测试方法必须是以test开头 */ public void testAdd(){ int result=cal.add(1, 2); Assert.assertEquals(3, result); }public void testMinus(){ int result=cal.minus(2, 1); Assert.assertEquals(1, result); }}
此时我们只要运行就可以看到测试结果了,此时会在IDE左侧出现a bar,如果为绿条,那么说明测试是通过的,如果为红色则说明不是正确的,跟您的期望值有所不同,记住这点,出现绿条只能说明该测试符合你的期望,但它不能说明该段代码就是正确的。
我们可以自己尝试写几个测试的类,难道我们要测试的话都是一个一个测试吗,这当然不行,所以JUnit给我们提供了一次测试的方法,具体实现如下:
package org.rjb;import junit.framework.Test;import junit.framework.TestSuite;/** * 必须继承自TestSuite来实现所有测试 * @author Administrator * */public class TestAll extends TestSuite{ //此函数必须是public static类型,且返回Test对象,并且函数名必须为suite public static Test suite(){ TestSuite suite = new TestSuite(); suite.addTestSuite(CalculateTest.class); suite.addTestSuite(LargestTest.class); return suite; }}
这样一来我们就可以一次把多个测试类执行了,ok,就这么简单了,其实JUnit涉及的东西本来就不多,看看如果您能理解上面的代码,那么您应该能在项目中很快应用上面的测试方法了。