单元测试 – 如何使Mock对象与目标对象保持同步

我问的是模拟对象管理,无论具体实现如何(EasyMock,Mock Object等).

由于以下原因,我一直不愿意在我的单元测试中使用Mock对象:
Mock对象的行为必须镜像被模拟对象的行为.如果被模拟对象的行为发生了变化,我们也必须改变模拟对象的行为.如果我们不这样做,模拟对象的行为将与真实对象不同步,从而使单元测试变得毫无意义,这是危险的.

我的问题是,
如何保持模拟对象与目标对象同步?
你如何宣传这些变化?
你使用任何模拟对象管理技术吗?

编辑:
更改标题以缩小范围.

最佳答案 定义良好的API不应该具有这种余地:给定一组输入,被模拟的对象应该仅以这些特定方式运行:行为与接口相关联.如果允许方差,那么你的模拟对象应该测试这个对象可以做的所有不同的事情.

您可以通过以下方式降低行为偏离的风险:

>集成测试,和
>将模拟数据与实际实现进行比较.

点赞