如何在iOS上对不应公开的功能进行单元测试?
我有一个plist文件,其中包含一个顶级字典,该字典包含一个字符串数组 我想测试:如何在iOS上对不应公开的功能进行单元测试?,ios,objective-c,iphone,unit-testing,swift,Ios,Objective C,Iphone,Unit Testing,Swift,我有一个plist文件,其中包含一个顶级字典,该字典包含一个字符串数组 我想测试: 这本字典不是零 数组不是零 数组中至少有一个有效的字符串对象 这些单元测试运行得非常好。非常解耦。但问题是我必须公开类函数,以便Xcode XCTest能够测试它们。这3个函数只是帮助函数,用于获取我们需要的实际数据 在保持测试的同时,如何在这些助手函数上使用适当的可见性?没有人需要知道这3个函数,但我希望对它们进行测试。有两个可靠的选项: 创建第二个.h文件,名为MyClass\u TestHelpers.h,
在保持测试的同时,如何在这些助手函数上使用适当的可见性?没有人需要知道这3个函数,但我希望对它们进行测试。有两个可靠的选项:
.h
文件,名为MyClass\u TestHelpers.h
,您可以在其中声明所需的方法两者的作用基本相同:在另一个
.h
文件中声明方法。在这两种情况下,只需将.h
文件包含在测试类中即可。这样,这些方法只会暴露在您的测试中。您确定应该这样做吗?请看这里的第二个答案:我明白您的意思-只测试公共API。但是当我想测试一个Plist是否存在时呢?也许有人不小心把它从项目中删除了。如果是这样,我会立即知道问题出在哪里。这不是一个公共api函数,但仍然需要测试(我认为)。你怎么认为?