您是否测试仅修改对象状态的方法?

时间:2011-12-07 19:16:18

标签: unit-testing testing

我有一个对象,它上面有一个public void方法,只修改内部状态。我的一部分感觉好像它应该有测试,因为它是一种公共方法,但你如何进行测试呢?您是否打扰或依赖其他利用内部状态发生变化的其他测试?

要添加一个示例,我正在实现一个gap buffer,它上面有一个insert方法和一个只修改内部状态的moveCursorForward方法。

谢谢, ALY

2 个答案:

答案 0 :(得分:3)

我认为注射是你的答案。创建一个Cursor对象并将其注入Buffer。单元测试光标对象,以便您知道它完美地工作;)。由于游标是有状态的并且您已将其传递到缓冲区,因此您可以在测试moveCursorForward时对游标对象进行断言。

查看Michael Feather的 Working Effectively with Legacy Code

这也是模拟对象可能有益的地方。

答案 1 :(得分:2)

我更喜欢对这些方法进行单独测试。例如,“moveCursorForward”方法有两种情况: 1.游标已经在缓冲区的末尾 2.光标不在缓冲区的末尾

因此,如果您没有为它创建特殊测试,则可能会跳过案例1。 换句话说,你可以错过一些边界情况。