我问的是模拟对象管理,无论具体实现如何(EasyMock,Mock Object等).
由于以下原因,我一直不愿意在我的单元测试中使用Mock对象:
Mock对象的行为必须镜像被模拟对象的行为.如果被模拟对象的行为发生了变化,我们也必须改变模拟对象的行为.如果我们不这样做,模拟对象的行为将与真实对象不同步,从而使单元测试变得毫无意义,这是危险的.
我的问题是,
如何保持模拟对象与目标对象同步?
你如何宣传这些变化?
你使用任何模拟对象管理技术吗?
编辑:
更改标题以缩小范围.
最佳答案 定义良好的API不应该具有这种余地:给定一组输入,被模拟的对象应该仅以这些特定方式运行:行为与接口相关联.如果允许方差,那么你的模拟对象应该测试这个对象可以做的所有不同的事情.
您可以通过以下方式降低行为偏离的风险:
>集成测试,和
>将模拟数据与实际实现进行比较.