Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/typo3/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Objective c 我应该测试只改变对象内部状态的公共类函数吗?_Objective C_Unit Testing - Fatal编程技术网

Objective c 我应该测试只改变对象内部状态的公共类函数吗?

Objective c 我应该测试只改变对象内部状态的公共类函数吗?,objective-c,unit-testing,Objective C,Unit Testing,我决定将单元测试添加到现有项目中(相当大)。 我使用“谷歌工具箱mac”的各种类型的Statsert。。。和OCMock框架 但我想我测试错了。例如,我有一个公共函数saveData,它不返回任何内容,只更改对象的内部状态。我应该测试一下吗?由于封装原则,我不必太担心对象的实现,也不必依赖于私有变量(因为它们将来可以更改/删除) 在实际项目中,这个函数saveData有100行长,它改变了类的许多私有变量 那么,我是否应该测试它?我以前在单元测试方面有点经验,不能自己做决定。更改的内部状态是否会

我决定将单元测试添加到现有项目中(相当大)。 我使用“谷歌工具箱mac”的各种类型的Statsert。。。和OCMock框架

但我想我测试错了。例如,我有一个公共函数saveData,它不返回任何内容,只更改对象的内部状态。我应该测试一下吗?由于封装原则,我不必太担心对象的实现,也不必依赖于私有变量(因为它们将来可以更改/删除)

在实际项目中,这个函数saveData有100行长,它改变了类的许多私有变量


那么,我是否应该测试它?我以前在单元测试方面有点经验,不能自己做决定。

更改的内部状态是否会影响以后对该对象的任何调用?如果是这样,您应该将其包括在单元测试中,如

  • 测试a()
  • 是否保存数据()
  • 再次测试a()
即使没有,单元测试也可能是一个好主意。不是为了确定使用此方法是否会导致其他代码中断,而是为了自动测试该方法的正确实现。即使该方法没有返回任何内容,它可能仍然有某种契约(“如果我调用它,这一定会发生”),您应该检查是否发生了应该发生的事情(例如,在日志文件中添加了一行或其他内容)

现在,如何检查方法是否没有返回任何内容,完全是另一个问题。具有讽刺意味的是,这是单元测试的一个实现细节

@implementation Foo
-(void) saveData {
 internalData_ = 88;
}