本文假设读者已了解mock的基本定义,基础使用场景。本文的mock框架采用jmock
1、mock经典测试场景
class ToTest {
private Member m;
public void test(Varible v){
m.call();
v.call();
}
}
通过mock出一个m和v,并对其行为进行预测,就可以对ToTest.test()进行单元测试
2、本文关注的问题为以下使用场景
Class ToTestA{
public int test(){
SomeClass s = new SomeClass();
s.call();
}
}
这样的情况下,如何才能对ToTestA.test()进行有效的单元测试。
笔者碰到的情况不是这么简单,因为还涉及到将类名存储到数据库,然后进行反射拿到类的实例,但是问题和上述基本一致。
3、解决办法
构造一个factory,使用factory method构造对象。
Class Factory{
public SomeClass build(){
return new SomeClass();
}
}
新的ToTestA实现
Class ToTestA{
Factory f = new Factory();
public int test(){
SomeClass s = f.build();
s.call();
}
}
那么被测试的模型就成功转换为Class ToTest,能够满足mock的要求
4、评价
缺陷:需要先对源代码进行改造后才能继续重构,并且产生新的类
优势:在对主逻辑进行重构前可以写出能跑的测试用例
分享到:
相关推荐
mock测试实战
可以用来Mock JAVA代码中的静态方法
Mock模拟测试,定义、好处、关键点、Mockito使用、Mock 对象的行为验证、Spy 对象验证等
mock练习
Python在测试中使用Mock的方法
- 学习者可以通过本项目了解如何在Objective-C中使用Mock对象进行单元测试,提高代码的可测试性和可维护性。 - 开发团队可以将本项目作为指导,逐步引入Mock对象到他们的测试实践中,从而提高代码质量和开发效率。 -...
服务端Mock测试
mock对象
Mock counterfeiter - 一个工具用于在Go中生成自容器,类型安全的测试Mock对象
iview.test测试demo包含拖拽排序 mock测试 iview模板...
Mock 是一种测试技术,用于模拟某些不容易构造或者不容易获取的对象,以便测试。在实际工作中,可能会遇到依赖接口不通、异常数据难模拟、单元测试干扰等问题,引入 Mock 可以解决这些问题,使团队可以并行工作,并...
支持http接口自由mock,可根据需要进行接口mock测试。
Mock对象教程.pdf
火龙果软件工程技术中心 本文内容包括:1.Mock...使用Mock方法能够模拟协同模块或领域对象,从而把测试与测试边界以外的对象隔离开。使单元测试顺利进行。然而,Mock方法在辅助测试的同时,也给开发或测试人员带来额
mock
Mock在Python单元测试中的使用.pdf
很有用的C++单元测试工具,附使用教程,如何编译Google Mock和Google Test,环境搭建编写测试用例
Python mock的基本使用介绍。Mock即模拟的意思。在Python中,提供了基于单元测试的Mock模块,它的主要作用是使用mock对象替代掉指定的Python对象,以达到模拟对象功能的行为。
在java web应用中,通过mock技术可以模拟spring容器,从而进行单元测试,详细可以参见本文
在window或者linux上,模拟一个mock接口,可以实现等同的接口效果,本人测试过