总所周知,单元测试是保证质量或 TDD 必不可少的部分,对项目的重要性不言而喻。本文以实例说明了 Seam 的单元测试如何进行
在做单元测试时,代码覆盖率常常被拿来作为衡量测试好坏的指标,甚至,用代码覆盖率来考核测试任务完成情况,比如,代码覆盖率必须达到80%或 90%。于是乎,测试人员费尽心思设计案例覆盖代码。用代码覆盖率来衡量,有利也有有弊。
是在编写一个方法之前就编写它的单元测试,还是在写完这个方法,甚至是整个类之后才编写单元测试呢?John Ferguson Smart[1]在他的blog中再次提出了这个问题,并根据自己的经验给出了一些建议。
本篇将讲述.NET Compact Framework下的单元测试。在.NET Compact Framework下可以使用NUintLite进行单元测试。
刚接触单元测试时,就是使用的Junit,说实话,对于新手来说,这个东西还是很直观的,成功了就是一条非常好看的绿条,失败了就是一条让心滴血的红条(有点夸张),但正是由于它的直观,也会很容易迷惑人。一开始,在我心里就留有这样一个印象,红条出现,那肯定是有不对的地方(这无可厚非),绿条出现就一定成功了,那我就不去再管了,这就有问题了,为什么呢?
我觉得这是一个对Test Fixture的一个很清晰明了的定义,就是运行被测软件所需要的一切东西,这个“东西”不单只是数据,同时还包括对被测软件的准备,例如实例化某个被测方法所在的类,准备数据库的ConnectionString等。通常来说,有三种方法来准备Test Fixture。
在软件行业里,几乎所有的开发人员都在谈代码质量,而每个人对代码质量都有一套自己的看法。甚至术语代码味道(code smell) 也已进入大众词汇表,成为描述代码需要改进的一种方式。
单元测试是一个检测bug的方法。首先,单元测试适用于单独的代码片断。例如函数,方法。除非这些最小的代码片断是正确的,否则,整个软件的“大厦“将会倒塌。其次,单元测试让代码的编写者也同时来参与代码的测试。通过测试能够查出bug,但程序员除了编码不愿花费时间在其他任何事上。
一种新的单元测试的方法意味着什么?难道说Junit或者TestNG还不够好?Junit(这里我提及到它因为它简单,但是在我的讨论中,TestNG 也一样简单 from here on I’ll nominate it only for briefness,but TestNG is the same for my discussion)把测试类作为重点,并且所有的测试都是从那里开始。这意味着事实上,被测试类被认为仅仅存在于测试代码中,程序员只能通过它们使用的名字惯例来找到这些被测试类。
测试驱动的开发和单元测试是确保代码在经过修改和重大调整之后依然能如我们期望的一样工作的最新方法。在本文中,您将到如何在模块、用户界面(UI)层对自己的PHP代码进行单元测试。
理解设计是很重要的,特别是要搞清楚被测试模块在整个软件中所处的位置,这对测试的内容将会有很大的影响。需要记住的一个原则就是:好的设计,各模块只负责完成自己的事情,层次与分工是很明确的。在单元测试的时候,可以不用测试不属于被测试模块所负责的功能,以减少测试用例的冗余,集成测试的时候会有机会测试到的。
单元测试只会浪费时间吗?某些软件专家们确实是这么想的。最近在Software Quality Insights上看到一篇文章——《单元测试真的有用吗?》。那些认为单元测试无用的开发人员给出了如下理由。
单元测试是开发者编写的一小段代码,用于检验被测代码的一个很小的、很明确的功能是否正确。通常情况下,一个单元测试(用例)用于判断某个特定条件(或场景)下特定函数的行为。
近期查看了一些关于敏捷开发,极限编程的一些资料。在敏捷开发中有一种比较出名的方式即TDD(Test Driven Development,测试驱动开发),这些都包含测试先行的思想。细细分析一下,发现其中有一些还是很有用的思想,也就是我今天要讨论的问题,用“黑-白”流程来做单元测试。
CPPUNIT是一个测试驱动开发的测试框架。所谓测试驱动开发(TDD)是一种可以在开发过程中控制忧虑感的开发方法,它坚持以测试作为开发过程的中心,在开发前根据对将要开发的程序的要求,先写好所有测试代码,并且在开发过程中不断地通过运行测试代码来获得所开发的代码与所要求的结果之间的差距。CPPUNIT是XUNIT的一部分,它是由JUNIT演变过来的,专门针对C/C++的单元测试工具。
测试驱动开发(TDD)是以测试作为开发过程的中心,它坚持,在编写实际代码之前,先写好基于产品代码的测试代码。开发过程的目标就是首先使测试能够通过,然后再优化设计结构。测试驱动开发式是极限编程的重要组成部分。XUnit,一个基于测试驱动开发的测试框架,它为我们在开发过程中使用测试驱动开发提供了一个方便的工具,使我们得以快速的进行单元测试。XUnit的成员有很多,如JUnit,PythonUnit等。今天给大家介绍的CppUnit即是XUnit家族中的一员,它是一个专门面向C++的测试框架。
cppunit是用于为C++代码写单元测试的一个开源框架。为了更有效的熟悉和维护某个别人用C/C++编写的服务器的源代码,我决定用cppunit给原来的代码写单元测试代码,希望在熟悉源码的同时也对源码进行一定程度的单元测试和修改。