测试驱动开发之基础---单元测试
- 摘要:学习测试驱动开发之前,应当正确理解一下单元测试的概念,学习单元测试之后可以清楚的知道所谓的单元为单一职责的一个方法即一个方法只做一件事情,这也符合面向对象的单一职责的原则。因此单元测试的概念可以笼统的理解为:针对一个工作单元设计的测试。单元测试有各种不同的编写方式,但所有单元测试有些共同的特征:1.代码的隔离性2.与团队其他人员代码的隔离性3.有针对性4.可预测性5.可重复的知道了什么是单元测试,那么我们就应该很清楚的知道如果进行一个单元测试,测试的范围应该不超越要测试的内容边界
- 标签:测试 开发
学习测试驱动开发之前,应当正确理解一下单元测试的概念,学习单元测试之后可以清楚的知道所谓的单元为单一职责的一个方法即一个方法只做一件事情,这也符合面向对象的单一职责的原则。因此单元测试的概念可以笼统的理解为:针对一个工作单元设计的测试。
单元测试有各种不同的编写方式,但所有单元测试有些共同的特征:
1.代码的隔离性
2.与团队其他人员代码的隔离性
3.有针对性
4.可预测性
5.可重复的
知道了什么是单元测试,那么我们就应该很清楚的知道如果进行一个单元测试,测试的范围应该不超越要测试的内容边界,如果一旦超过了测试边界,那么就值得我们去深思一下,我们做的是不是单元测试了。
什么样的测试不是单元测试呢?我们在一个系统中写出一个个单元,这些单元难免与系统的其他部分有交叉性如数据库、其他系统或第三方产品系统,从而造成了被测代码与其他部分存在边界,因此测试时,如果产生问题有可能穿越几层代码,从而使测试失去了针对性,违背了单元测试背后的内容:只测试这个方法中的内容。跨边界时还会产生另外一个问题,特别是边界是一个共享资源时如数据库,与团队中的其他成员共享资源时,可能会污染他们的测试结果,例如,当自己运行测试写入值再读取时,其他成员也在处理同一代码,有这样就造成了测试的相互干扰,造成了测试环境的不稳定性。
并不是说那些跨过测试类或方法的测试就没有意义了,一组代码如果不能集成到更大的系统中,其价值是有限的。因此集成测试非常的重要,它是衡量整个系统的健康程度,所以集成测试也应该在开发过程中创建。常见的一种做法是 按特征划分工作单元并通过单元测试,然后集成测试,确保工作单元可以使用其他部分单元或被其他部分正常使用,因此我们应该-早集成,常集成。
以上不知理解是否正确欢迎各位大侠拍砖。