单元测试学习笔记 之四

发表于:2011-8-25 11:11

字体: | 上一篇 | 下一篇 | 我要投稿

 作者:未知    来源:51Testing软件测试网采编

分享:

  可以看出,目前JUnit(4.8版)对参数化测试的支持也不如NUnit,其局限性体现在:

  ● 测试类必须引入构造函数来接收由Test Runner传入的参数。

  ● 测试类的参数个数是固定的,由其构造函数确定。

  希望今后的版本会得到加强。

  4.3.3 引入类继承体系

  引入继承体系也是一种代码复用的常见形式,把共同代码放入基类中,而把特有代码放入派生类中,如下图所示:

  4.4 单一职责原则

  对于一个类,我们要求它“has only one reason for change”;对于一个方法,我们要求它“does one thing and does it well”;同样地,对一个测试方法,我们要求它“test one thing only”。要做到这一点,可以从以下几方面入手。

  4.4.1 在一个测试方法中仅使用一条断言语句

  当一个测试方法中出现了多条断言语句时,实际上说明该测试方法是在测试多件事情了。这时我们可以有两种方法解决:

  把一个测试方法拆分成多个测试方法。如果拆分的过程导致违背了DRY原则,那么可以使用前一节所讲到的技术来进行重构。

  如果这多个断言语句实际上是在测试同一件事情的多个方面的话,可以考虑将这些断言语句合并成一条断言语句。

  4.4.2 在一个测试方法中仅使用一个mock对象

  当一个测试方法中使用了不止一个mock对象时,说明该测试方法不是只测试一件事情。

  4.5 最小耦合原则

  最小耦合原则反映在单元测试代码中时,即要求保证每个测试方法之间是完全隔离、互不影响的。这就要求:

  测试方法之间不应有时间耦合,即它们的相对执行顺序是不会影响测试结果的。一个测试方法的通过与否不应该依赖于其它测试方法是否已被执行。

  测试方法之间不能彼此调用。

  测试方法之间不能共享状态和信息。

  4.6 测试代码的可读性

  本节我们来看一下测试代码可读性方面的一些指导方针。

  4.6.1 保持测试代码的逻辑简单

  应该避免在测试代码中引入逻辑. 具体地讲,测试代码中不应该出现if,switch-case,for/foreach,while,try-catch这样的语句。测试代码就应该只是顺序执行式代码。

  4.6.2 对测试代码采用命名规范

  采用整齐一致的命名规范可以使我们的测试代码更能被其他程序员理解。下面是我们推荐的命名规范。

测试工程(测试项目)

[ProjectUnderTest]Test

测试类

[ClassUnderTest]Test

测试方法

[Feature]_[Scenario]_[ExpectedResult]

测试用子类

Testing[ClassUnderTest]

Stub合作者

Stub[CollaboratorClass]

Mock合作者

Mock[CollaboratorClass]

54/5<12345>
2023测试行业从业人员调查问卷已开启,千元大奖正在等你~

关注51Testing

联系我们

快捷面板 站点地图 联系我们 广告服务 关于我们 站长统计 发展历程

法律顾问:上海兰迪律师事务所 项棋律师
版权所有 上海博为峰软件技术股份有限公司 Copyright©51testing.com 2003-2023
投诉及意见反馈:webmaster@51testing.com; 业务联系:service@51testing.com 021-64471599-8017

沪ICP备05003035号

沪公网安备 31010102002173号