JUnit最佳实践

转载 2004年11月01日 10:58:00
        JUnit最佳实践 

        Martin Fowler说过:“当你试图打印输出一些信息或调试一个表达式时,写一些测试代码来替代那些传统的方法。”一开始,你会发现你总是要创建一些新的Fixture,而且测试似乎使你的编程速度慢了下来。然而不久之后,你会发现你重复使用相同的Fixture,而且新的测试通常只涉及添加一个新的测试方法。 

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

        2. 不要依赖或假定测试运行的顺序,因为JUnit利用Vector保存测试方法。所以不同的平台会按不同的顺序从Vector中取出测试方法。 

        3. 避免编写有副作用的TestCase。例如:如果随后的测试依赖于某些特定的交易数据,就不要提交交易数据。简单的会滚就可以了。 

        4. 当继承一个测试类时,记得调用父类的setUp()和tearDown()方法。 

        5. 将测试代码和工作代码放在一起,一边同步编译和更新。(使用Ant中有支持junit的task.) 

        6. 测试类和测试方法应该有一致的命名方案。如在工作类名前加上test从而形成测试类名。
        7. 确保测试与时间无关,不要依赖使用过期的数据进行测试。导致在随后的维护过程中很难重现测试。 

        8. 如果你编写的软件面向国际市场,编写测试时要考虑国际化的因素。不要仅用母语的Locale进行测试。 

        9. 尽可能地利用JUnit提供地assert/fail方法以及异常处理的方法,可以使代码更为简洁。

        10.测试要尽可能地小,执行速度快。 


        JUnit和ant结合 
        
        ant 提供了两个 target : junit 和 junitreport
        运行所有 测试用例 ,并生成 html 格式的报表 

        具体操作如下:
 
        1.将 junit.jar 放在 ANT_HOME/lib 目录下 

        2.修改 build.xml ,加入如下 内容:
 
        <property name="report" value="report" /> <target name="junitreport" depends="clean, compile"> <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 目录下的 index.html 就可以看到很直观的测试运行报告,一目了然。

Junit 最佳实践

对还没有实现的测试代码抛出一个异常 这种做法可以防止测试通过并且提醒自己必须实现这部分代码. 如: @Test        public void testMethod(){        ...
  • wuDaSong_
  • wuDaSong_
  • 2012年10月05日 23:12
  • 601

JUnit最佳实践

JUnit最佳实践cherami 转贴  (参与分:20053,专家分:4960)   发表:2003-9-16 下午7:57   版本:1.0   阅读:3899次Martin Fowler说过:“...
  • duoshanx
  • duoshanx
  • 2004年09月26日 05:13
  • 2426

JUnit 最佳实践

  JUnit best practices      JUnit 最佳实践    Techniques for building...
  • justin_hua
  • justin_hua
  • 2007年09月01日 23:54
  • 726

junit最佳实践

1.单元测试不是为了证明您是对的,而是为了证明您没有错误;2.单元测试主要是用来判断程序的执行结果与自己期望的结果是否一致;3.测试用例之间一定要保持完全的独立性,不容许出现任何依赖;4.不能依赖或假...
  • aranderla
  • aranderla
  • 2011年05月10日 23:00
  • 177

JUnit最佳实践

JUnit最佳实践 以下是对JUnit实践的一个很好的总结,信息来源于一些比较权威的JUnit书籍和网上资料。这里集合如下(持续更新~~):   每次只对一个对象进行UT测试(uni...
  • feng_926
  • feng_926
  • 2013年08月17日 22:43
  • 759

使用Junit的最佳实践

1) 新建一个名为test的source folder,用于存放测试类源代码 2) 目标类与测试类应该位于同一个包下面,这样测试类中就不必导入源代码所在的包,因为他们位于同一个包下面 3) 测...
  • yuanhenglizhen110
  • yuanhenglizhen110
  • 2013年08月11日 21:54
  • 780

用spring 集成mybatis的最佳实践

第一篇博文,欢迎各位大神拍砖
  • yeluochengshang
  • yeluochengshang
  • 2014年09月24日 01:46
  • 1641

RUP和六个最佳实践的关系

前几次图文主要介绍了软件工程实践中六个最佳经验(迭代化开发、需求管理、基于构件的体系结构、可视化建模、持续的质量验证、变更管理)的由来,以及它们具体的内容,本次图文介绍RUP的相关内容,首先什么是Ra...
  • LSGO_MYP
  • LSGO_MYP
  • 2016年09月07日 20:58
  • 1504

工欲善其事必先利其器——研发团队开源管理工具最佳实践

持续集成:jenkins   加速项目推进心跳项目管理及构建:maven+nexus  强制的组件化开发开发任务及缺陷跟踪:redmine 高效的沟通自动化测试及自动缺陷检测:Junit,findbu...
  • kthq
  • kthq
  • 2013年12月19日 23:09
  • 8648

MySql官方建议:Innodb表最佳实践

原文:http://dev.mysql.com/doc/refman/5.5/en/innodb-default-se.html Best Practices for InnoDB Tables ...
  • qw_xingzhe
  • qw_xingzhe
  • 2017年07月18日 17:25
  • 242
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:JUnit最佳实践
举报原因:
原因补充:

(最多只允许输入30个字)