模拟框架,例如 EasyMock,可以更容易地插入虚拟依赖项。话虽如此,使用它们来确保如何调用特定组件上的不同方法(以及以什么顺序)对我来说似乎很糟糕。它将行为暴露给测试类,这使得维护生产代码变得更加困难。而且我真的没有看到好处;在精神上,我觉得我被束缚在一个沉重的球上。
我更喜欢只针对接口进行测试,将测试数据作为输入并断言结果。更好的是,使用一些自动生成测试数据的测试工具来验证给定的属性。例如,将一个元素添加到列表中,然后立即删除它会产生相同的列表。
在我们的工作场所,我们使用提供测试覆盖率的 Hudson。不幸的是,很容易盲目地痴迷于一切都经过测试。我强烈认为,如果一个人想要在维护模式下也有生产力,那么不应该测试所有东西。一个很好的例子是 Web 框架中的控制器。通常它们应该包含很少的逻辑,在我诚实的意见中,使用控制器以特定顺序调用某某方法的模拟框架进行测试是荒谬的。
亲爱的SOers,您对此有何看法?