论坛首页 Java企业应用论坛

初了解Junit3.8.2&Junit4

浏览 4306 次
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
作者 正文
   发表时间:2007-03-18  

       在这儿安家已经好久了,就是没能上来写东西,实习这段时间,项目组的一个大牛极力推荐写代码多写测试类,刚开始的时候也不知道写测试类干嘛,再说自己刚开始学习写代码根本没那个能力,乱七八糟的代码写出来只要能实行应有的功能就已经感觉已经很庆幸了,代码写的像大牛说的那样天马行空了。。。。。跑题了,那时候改点东西运行一下看看是否达到预期的结果慢的要死,那会儿几乎一天只能写一点点的东西,那会儿大牛说的用junit写测试类压根就没考虑,慢慢,慢慢的感觉到自己写代码的效率是非常的低,最近由于时间比较多,大牛有时候给我们讲点新东西,有提到了junit,听大牛说的,想想自己学习的这段过程中写代码效率低,是不是应该学习学习junit,今天找了些junit的东西看了看,找到的是关于4的相关资料,junit用java5的annotation使得写测试类更加简单(在我没看junit3.x前我也不知道倒底简单了多少,看了3.8的一点资料后发现果然简单了许多),由于一直用的java1.4.2,对annotation的特性还没有多少了解,硬着头皮把那篇文章看完了,在junit4中涉及倒的概念有测试类(方法),这是最基础的,在3.8中很注重测试方法的命名必须以Test开头的类,而在4中你可以用annotation特性,在测试方法前加@Test就不必特别小心测试类的命名,测试方法必须是public void的,记住:您的单元测试代码不是用来证明您是对的,而是为了证明您没有错。因此单元测试的范围要全面,比如对边界值、正常值、错误值得测试;对代码可能出现的问题要全面预测,而这也正是需求分析、详细设计环节中要考虑的,(这是引的那篇文章的原话)要牢记!请牢记这一条 JUnit 最佳实践:测试任何可能的错误。单元测试不是用来证明您是对的,而是为了证明您没有错。测试有failure和error两种结果,failure表示测试点出现问题,说明我们写的类有问题,error是由代码异常引起,可能是测试类代码问题,也有可能是要测试的代码潜在的bug。  下一个概念就是fixture,就是一个测试方法或多个测试方法的的一系列公共数据,在4中junit的提供了方法定义fixture,应用annotation,junit4应用注解before定义初始fixtrue方法和注解after定义fixture用完后注销方法,before,after只能一次运行一个测试方法,也就是说初始一次fixture运行测试方法注销fixture,运行下一个又要初始fixtrue,又要注销。。。。。还是有点麻烦,要使所有的测试方法运行只需一次初始和一次注销,那么就要用注解beforeClass和afterClass,在3.8中用setUp()初始fixture和tearDown()注销fixture,在3.8中是不是也有类似的一次初始化fixture和注销fixture我还不清楚(嘻嘻,毕竟只是开始看,慢慢来),希望高手来指点。还有一个junit中一个重要的概念就是测试套件(Suite),就是junit提供的批量运行测试类的方法,主要原因写的代码的类越多,方法越多一次只运行一个测试方法,这样测试起来效率就慢了,批运行就快许多。。。。。今天就到这里吧,感觉了解的东西还挺多的,我理解的肯定有许多不正确的地方,希望高手多指点,谢谢,我会继续学习junit的。

   发表时间:2007-03-18  
说的比较详细,我们项目目前做单元测试只是虚拟数据测试下,没有深入的测试,时间紧,流程多,没办法,有时间真得用心做
0 请登录后投票
   发表时间:2007-03-18  
lz说得“最佳实践” 可不是什么最佳实践。
强调一个方面,就会忽略其他方面。

推荐本书《Pragmatic Unit Testing in Java with JUnit 》

好的单元测试具有以下的特点:简称为 A-TRIP。
自动性(Automatic)
完备性(Thorough)
可重复性(Repeatable)
独立性(Independent)
专业性(Professional)



0 请登录后投票
   发表时间:2007-03-18  
如果对TDD感兴趣还可以看看 kent beck的 Test-driven development,很不错,书的后面谈到了一些测试模式,对理解测试在开发中的作用很有帮助。
0 请登录后投票
   发表时间:2007-03-19  
借楼主一贴,我要大声的对junit4说一个F字


我和我的4个志同道合的朋友正在啃junit4的代码!原因只有一个!junit4已经完完全全的做到了无缝,透明!一个@Test就把方法包到测试框架中去了!还有TestRunner,简直神了,可以对bug进行filter,允许log对象的注入,并且可以随时中断!但是却保留部分测试数据!并且提供接口转化! 我和朋友正在做可视化测试框架,这部分的东西对我们来说就象有个人提壶水从我们头上浇下来一样!当我们还在钻研如何使注入的代价可估计化时,junit早就在程序里面裸奔了,如此少的代码。。。。。神了!
0 请登录后投票
   发表时间:2007-03-19  
Godlikeme 写道
lz说得“最佳实践” 可不是什么最佳实践。
强调一个方面,就会忽略其他方面。

推荐本书《Pragmatic Unit Testing in Java with JUnit 》

好的单元测试具有以下的特点:简称为 A-TRIP。
自动性(Automatic)
完备性(Thorough)
可重复性(Repeatable)
独立性(Independent)
专业性(Professional)





谢谢指导
0 请登录后投票
论坛首页 Java企业应用版

跳转论坛:
Global site tag (gtag.js) - Google Analytics