java junit是什么,junit是什么
大家好,如果您还对java junit是什么不太了解,没有关系,今天就由本站为大家分享java junit是什么的知识,包括junit是什么的问题都会给大家分析到,还望可以解决大家的问题,下面我们就开始吧!
java junit有什么作用呢,普遍用在什么地方呢
Junit,是Java的单元测试的工具;如果你看一些软件工程的书籍就会知道,测试分很多阶段,第一阶段就是单元测试。
Junit作用:Java,我们知道是编程语言,但是任何程序都有可能会出错。为了保证程序如期望的运行和获得结果,进行一些假定条件和假定结果的一种编成思维。
小规模的系统看不出效果,一旦有很大规模了。比如涛宝要上一个新的功能,但是涛宝本身有1000万个方法,在每次系统上线的时候,要确保本身的1000万个方法都是运行正常的,你怎么办?如果有junit,跑一下就知道结果啦。
希望对你有帮助。
名词解释 什么是JUnit
JUnit是一个开发源代码的Java测试框架用于编写和运行可重复的测试他是用于单元测试框架体系xUnit的一个实例(用于java语言)它包括以下特性用于测试期望结果的断言(Assertion)用于共享共同测试数据的测试工具用于方便的组织和运行测试的测试套件图形和文本的测试运行器 JUnit最初是由Erich Gamma(GoF之一)和Kent Beck(xp和refactor的先驱之一)编写的需要说明的是JUnit一般是用来进行单元测试的因此需要了解被测试代码的内部结构(即所谓的白盒测试)另外junit是在xp编程和重构(refactor)中被极力推荐使用的工具因为在实现自动单元测试的情况下可以大大的提高开发的效率但是实际上编写测试代码也是需要耗费很多的时间和精力的那么使用这个东东好处到底在哪里呢?笔者认为是这样的对于xp编程而言要求在编写代码之前先写测试这样可以强制你在写代码之前好好的思考代码(方法)的功能和逻辑否则编写的代码很不稳定那么你需要同时维护测试代码和实际代码这个工作量就会大大增加因此在xp编程中基本过程是这样的构思-》编写测试代码-》编写代码-》测试而且编写测试和编写代码都是增量式的写一点测一点在编写以后的代码中如果发现问题可以较块的追踪到问题的原因减小回归错误的纠错难度对于重构而言其好处和xp编程中是类似的因为重构也是要求改一点测一点减少回归错误造成的时间消耗对于非以上两种情况我们在开发的时候使用junit写一些适当的测试也是有必要的因为一般我们也是需要编写测试的代码的可能原来不是使用的junit如果使用junit而且针对接口(方法)编写测试代码会减少以后的维护工作例如以后对方法内部的修改(这个就是相当于重构的工作了)另外就是因为junit有断言功能如果测试结果不通过会告诉我们那个测试不通过为什么而如果是想以前的一般做法是写一些测试代码看其输出结果然后再由自己来判断结果使用正确使用junit的好处就是这个结果是否正确的判断是它来完成的我们只需要看看它告诉我们结果是否正确就可以了在一般情况下会大大提高效率
安装JUnit
安装很简单先到以下地址下载一个最新的zip包下载完以后解压缩到你喜欢的目录下假设是JUNIT_HOME然后将JUNIT_HOME下的junit jar包加到你的系统的CLASSPATH环境变量中对于IDE环境对于需要用到的junit的项目增加到lib中其设置不同的IDE有不同的设置这里不多讲如何使用JUnit写测试?
创建一个TestCase的子类
package junitfaq;
import java util*;import junit framework*; public class SimpleTest extends TestCase{ public SimpleTest(String name){super(name);}写一个测试方法断言期望的结果public void testEmptyCollection(){Collection collection= new ArrayList();assertTrue(collection isEmpty());}
注意 JUnit推荐的做法是以test作为待测试的方法的开头这样这些方法可以被自动找到并被测试
写一个suite()方法它会使用反射动态的创建一个包含所有的testXxxx方法的测试套件public static Test suite(){return new TestSuite(SimpleTest class);}
写一个main()方法以文本运行器的方式方便的运行测试
public static void main(String args[]){junit textui TestRunner run(suite());}}
运行测试
以文本方式运行
java junitfaq SimpleTest
通过的测试结果是 Time: OK( tests)Time上的小点表示测试个数如果测试通过则显示OK否则在小点的后边标上F表示该测试失败每次的测试结果都应该是OK的这样才能说明测试是成功的如果不成功就要马上根据提示信息进行修正了如果JUnit报告了测试没有成功它会区分失败(failures)和错误(errors)失败是你的代码中的assert方法失败引起的而错误则是代码异常引起的例如ArrayIndexOutOfBoundsException以图形方式运行
java junit swingui TestRunner junitfaq SimpleTest
通过的测试结果在图形界面的绿色条部分以上是最简单的测试样例在实际的测试中我们测试某个类的功能是常常需要执行一些共同的操作完成以后需要销毁所占用的资源(例如网络连接数据库连接关闭打开的文件等) TestCase类给我们提供了setUp方法和tearDown方法 setUp方法的内容在测试你编写的TestCase子类的每个testXxxx方法之前都会运行而tearDown方法的内容在每个testXxxx方法结束以后都会执行这个既共享了初始化代码又消除了各个测试代码之间可能产生的相互影响JUnit最佳实践
Martin Fowler说过当你试图打印输出一些信息或调试一个表达式时写一些测试代码来替代那些传统的方法一开始你会发现你总是要创建一些新的Fixture而且测试似乎使你的编程速度慢了下来然而不久之后你会发现你重复使用相同的Fixture而且新的测试通常只涉及添加一个新的测试方法你可能会写许多测试代码但你很快就会发现你设想出的测试只有一小部分是真正有用的你所需要的测试是那些会失败的测试即那些你认为不会失败的测试或你认为应该失败却成功的测试我们前面提到过测试是一个不会中断的过程一旦你有了一个测试你就要一直确保其正常工作以检验你所加入的新的工作代码不要每隔几天或最后才运行测试每天你都应该运行一下测试代码这种投资很小但可以确保你得到可以信赖的工作代码你的返工率降低了你会有更多的时间编写工作代码不要认为压力大就不写测试代码相反编写测试代码会使你的压力逐渐减轻应为通过编写测试代码你对类的行为有了确切的认识你会更快地编写出有效率地工作代码下面是一些具体的编写测试代码的技巧或较好的实践方法不要用TestCase的构造函数初始化Fixture而要用setUp()和tearDown()方法不要依赖或假定测试运行的顺序因为JUnit利用Vector保存测试方法所以不同的平台会按不同的顺序从Vector中取出测试方法避免编写有副作用的TestCase例如如果随后的测试依赖于某些特定的交易数据就不要提交交易数据简单的会滚就可以了当继承一个测试类时记得调用父类的setUp()和tearDown()方法将测试代码和工作代码放在一起一边同步编译和更新(使用Ant中有支持junit的task)测试类和测试方法应该有一致的命名方案如在工作类名前加上test从而形成测试类名确保测试与时间无关不要依赖使用过期的数据进行测试导致在随后的维护过程中很难重现测试如果你编写的软件面向国际市场编写测试时要考虑国际化的因素不要仅用母语的Locale进行测试尽可能地利用JUnit提供地assert/fail方法以及异常处理的方法可以使代码更为简洁测试要尽可能地小执行速度快 JUnit和ant结合 ant提供了两个 target junit和 junitreport运行所有测试用例并生成格式的报表具体操作如下将 junit jar放在 ANT_HOME\lib目录下修改 build xml加入如下内容
<property name= report value= report/><target name= junitreport depends= clean pile><junit printsummary= on fork= true haltonfailure= false failureproperty= tests failed showoutput= true><classpath refid= myclasspath/><formatter type= xml/><batchtest todir=${report}><fileset dir=${build}><include name=**/*Test*/></fileset></batchtest></junit><junitreport todir=${report}><fileset dir=${report}><include name= TEST* xml/></fileset><report format= frames todir=${report}/></junitreport><fail if= tests failed> One or more tests failed check the report for detail</fail></target>
运行这个 target ant会运行每个 TestCase在 report目录下就有了很多 TEST* xml和一些网页打开 report目录下的 l就可以看到很直观的测试运行报告一目了然 lishixinzhi/Article/program/Java/ky/201311/28784junit是什么
JUnit是一个开源的java单元测试框架。在1997年,由 Erich Gamma和 Kent Beck开发完成。这两个牛人中 Erich Gamma是 GOF之一;Kent Beck则在 XP中有重要的贡献(你觉得眼熟一点都不奇怪)。
正如常言道:“麻雀虽小,五脏俱全。” JUnit设计的非常小巧,但是功能却非常强大。
下面是JUnit一些特性的总结:
1)提供的API可以让你写出测试结果明确的可重用单元测试用例
2)提供了三种方式来显示你的测试结果,而且还可以扩展
3)提供了单元测试用例成批运行的功能
4)超轻量级而且使用简单,没有商业性的欺骗和无用的向导
5)整个框架设计良好,易扩展
对不同性质的被测对象,如Class,Jsp,Servlet,Ejb等,Junit有不同的使用技巧。由于本文的性质,以下仅以Class测试为例。
好了,本文到此结束,如果可以帮助到大家,还望关注本站哦!