我决定将单元测试添加到现有项目中(非常大)。 我正在使用“google toolbox for mac”用于各种类型的STAssert ...和OCMock框架。
但我认为我测试错了。例如,我有公共函数 saveData ,它不会返回任何内容,只会更改对象的内部状态。我应该测试一下吗?由于封装原则 - 我不必担心对象实现,我不能依赖私有变量(因为它们可以在将来更改/删除)
@implementation Foo
-(void) saveData {
internalData_ = 88;
}
在实际项目中,这个函数saveData是100行,它改变了很多类的私有变量。
那么,我应该测试一下吗?我之前有一些单元测试的经验,不能自己决定。
答案 0 :(得分:3)
更改的内部状态是否会影响该对象的后续调用?如果是这样,您应该将其包含在像
这样的单元测试中即使没有,也可以对它进行单元测试。不是用于确定其他代码是否会因使用此方法而中断,而是用于自动测试方法的正确实现。即使该方法没有返回任何东西,它可能仍然有某种契约(“如果我称之为,这必须发生”)并且您应该检查是否应该发生了什么,发生了(例如,在日志中添加了一行文件或其他东西)。
现在,如何检查方法是否返回任何内容,完全是另一个问题。具有讽刺意味的是,这是单元测试的实现细节。