JUnit测试建议

原创 2005年02月28日 22:21:00

以下是对JUnit实践的一个很好的总结,信息来源于一些比较权威的JUnit书籍和网上资料。这里集合如下:

 

1、每次只对一个对象进行UT测试(unit-test one object at a time)。这样能使你尽快发现问题,而不被各个对象之间的复杂关系所迷惑。


2
、给测试方法起个好名字(choose meaningful test method names)。应该是用形如testXXXYYY(),这样的格式来命名你的测试方法。前缀testJunit查找测试方法的依据,XXX应该是你测试的方法名,YYY应该是你测试的状态。当然如果你只有一种状态需要测试可以直接命名为testXXX()

3
、明确写出出错原因(explain the failure reason in assert calls)。在使用assertTrue,assertFalse,assertNotNull,assertNull方法时,应该将可能的错误的描述字符串,以第一个参数传入相应的方法。这样你可以迅速的找出出错原因。


4
、一个UT测试方法只应该测试一种情况(one unit test equals one testMethod)。一个方法中的多次测试,只会混乱你的测试目的。


5
、测试任何可能的错误(test anything that could possibly fail)。你的测试代码不是为了证明你是对的,而是为了证明你没有错。因此对测试的范围要全面,比如边界值、正常值、错误值;对代码可能出现的问题要全面预测。


6
、让你的测试帮助改善你的代码(let the test improve the code)。测试代码永远是我们代码的第一个用户,所以不仅让他帮组我们发现Bug,还要帮组我们改善我们的设计,就是有名的测试驱动开发(Test-Driven DevelopmentTDD)。


7
、一样的包,不同的位置(same package, separate directories)。测试的代码和被测试的代码应该放到不同的文件夹中,建议使用这种目录 src/java/代码 src/test/测试代码。

这样可以让两份代码使用一样的包结构,但是放在不同的目录下。

 

8、关于setupteardown

a)       不要用TestCase的构造函数初始化Fixture,而要用setUp()tearDown()方法。

b)       setUptearDown中的代码不应该是与测试方法相关的,而应该是全局相关的。如:针对与测试方法都要用到的数据库链接等等。

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

 

9、不要在mock object中牵扯到业务逻辑(don’t write business logic in mock objects)。


10
、只对可能产生错误的地方进行测试(only test what can possibly break)。如:一个类中频繁改动的函数。对于那些仅仅只含有getter/setter的类,如果是由IDE(如Eclipse)产生的,则可不测;如果是人工写,那么最好测试一下。

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

 

12、避免编写有副作用的TestCase,你要确信保持你的测试方法之间是独立的。

 

13、将测试代码和工作代码放在一起,一边同步编译和更新(使用Ant中有支持junittask)。

 

14、确保测试与时间无关,不要依赖使用过期的数据进行测试。导致在随后的维护过程中很难重现测试。

 

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

 

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

 

17、测试要尽可能地小,执行速度快。

 

18……等待你的高见!^_^

版权声明:本文为博主原创文章,未经博主允许不得转载。

相关文章推荐

JUnit 4.8 源码解读

JUnit 4.8 源码解读,大体讲述了test case的执行顺序

JUnit源码与设计模式欣赏——JUnit学习(三)

先介绍下这篇博文的由来,之前已经对JUnit的使用经行了深入的介绍和演示(参考JUnit学习(一),JUnit学习(二)),其中的部分功能是通过分析JUnit源代码找到的。得益于这个过程有幸完整的拜读...

JUnit源码分析(三)

三、微观——执行流程与代码风格来过一遍JUnit的执行流程吧,这样你就能对JUnit有个清晰的认识,虽然作为一个使用者这完全是不必要的。从《JUnit in Action》直接拿来一张JUnit流程图...
  • ai92
  • ai92
  • 2005-03-14 20:57
  • 8886

Ubuntu: Fcitx中文输入法安装 (2010-06-06)

Ubuntu系统好像还没像 搜狗拼音这样好用的输入法, 只能退而求其次用Fcitx,就是这个:安装方法:1.卸载IBUS: sudo apt-get remove ibus 2.安装依赖包(如果...

Junit源码分析

junit是我们平时开发中天天用到的测试框架,为了了解器内部隐藏的机关,特意分析了一下源码,这里我们用的是Junit3.8版本。1.包的划分  junit.awtui,这个是junit的awt实现的u...

JUnit入门

一、简介JUnit是一个开源的java单元测试框架。在1997年,由 Erich Gamma 和 Kent Beck 开发完成。这两个牛人中 Erich Gamma 是 GOF 之一;Kent Bec...
  • ai92
  • ai92
  • 2005-02-26 12:09
  • 43864

JUnit4 源码阅读(二) - 模型类 解读与分析

JUnit4 源码阅读(二) - 模型类 解读与分析如下图是runners部分的结构 可以分为两个部分 1. 模型类: 作用域模型,方法模型,测试类模型 2. 执行类Runner: 如Par...

分析 JUnit 框架源代码

理解 JUnit 测试框架实现原理和设计模式 本文细致地描述了 JUnit 的代码实现,在展示代码流程 UML 图的基础上,详细分析 JUnit 的内部实现代码的功能与机制,并在涉及相关设计模式的...

JUnit源码分析(二)

在上面我们已经提到了junit.extentions包中的内容TestSetup。来看看整个包的结构吧。    先简要的介绍下包中各个类的功能。ActiveTestSuite对TestSuite进行了...
  • ai92
  • ai92
  • 2005-03-13 20:26
  • 7599
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

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