单元测试之测试方法
2014-06-18 11:15
274 查看
单元测试面临的困难
职责不明确
类或者方法的职责不明确,违反了SRP原则.
类/方法如果处理了本不该它处理的逻辑,会造成单元测试需要关心过多的外部关联类.
静态方法
静态方法使得调用者直接面对实际的服务类,难以通过其它方式替代其实现,也难以扩展.
直接访问对象实例
调用者直接实例化服务对象,从而使用服务对象提供的服务.同静态方法一样,调用者直接面对服务类.
标准库
标准库中有非常多的接口调用使得调用者难以被测试.
准备数据
编写测试用例需要外部准备大量的数据.
可行的解决方案
重构系统
对于职责不明确的代码,只有通过重构才可以进行单元测试.
编写Mock和Stub
对接口Mock比较容易.Mock对象分为动态Mock和静态Mock.
具体类的Mock,可以通过子类继承来进行.
静态方法的Mock,可以使用classpath来进行.
在被测试类的namespace内,创建一个classname和方法签名完全一致的Mock实现方法.
然后保证该Mock方法的位置在真实方法之前被调用即可.
职责不明确
类或者方法的职责不明确,违反了SRP原则.
类/方法如果处理了本不该它处理的逻辑,会造成单元测试需要关心过多的外部关联类.
静态方法
静态方法使得调用者直接面对实际的服务类,难以通过其它方式替代其实现,也难以扩展.
直接访问对象实例
调用者直接实例化服务对象,从而使用服务对象提供的服务.同静态方法一样,调用者直接面对服务类.
标准库
标准库中有非常多的接口调用使得调用者难以被测试.
准备数据
编写测试用例需要外部准备大量的数据.
可行的解决方案
重构系统
对于职责不明确的代码,只有通过重构才可以进行单元测试.
编写Mock和Stub
对接口Mock比较容易.Mock对象分为动态Mock和静态Mock.
具体类的Mock,可以通过子类继承来进行.
静态方法的Mock,可以使用classpath来进行.
在被测试类的namespace内,创建一个classname和方法签名完全一致的Mock实现方法.
然后保证该Mock方法的位置在真实方法之前被调用即可.
相关文章推荐
- VS2005单元测试中测试无返回值的方法.
- VS2005单元测试中测试无返回值的方法
- 用例输入单元测试(3)--参数化测试方法
- JUnit单元测试实践:测试工具类和方法(EmptyUtils)
- JUnit单元测试实践:测试工具类和方法(EmptyUtils)
- 如何使用单元测试 测试WEB组件方法中的含有Session、Cookie等HttpContext功能调用的方法?
- asp.net单元测试--配置文件自动复制到VS的测试项目的方法
- JUnit单元测试(五)--通过反射测试私有方法
- 在单元测试中如何测试私有的方法
- 单元测试-如何测试void方法
- 消除 bug 三种方法:代码复查、单元测试、系统测试
- Visual Studio 2008 进行单元测试之测试私有方法
- 单元测试的测试用例编写方法
- 单元测试(3)--参数化测试方法
- 单元测试不可测试那些类(无抽象、静态类、静态方法)
- VS2005单元测试中测试无返回值的方法
- 如何使用单元测试 测试WEB组件方法中的含有Session、Cookie等HttpContext功能调用的方法? 转
- android不用另建工程进行单元测试及改变测试方法执行顺序
- JUnit单元测试实践:测试工具类和方法(EmptyUtils)
- 在单元测试中如何测试私有方法