设计iPhone / iPad应用程序以实现可测试性

时间:2010-11-02 23:45:44

标签: iphone unit-testing design-patterns ipad

我目前正在使用GHUnitOCMock来测试我的应用。我正在使用它们,因为我喜欢我可以在实际设备上运行测试代码的事实。

我的应用程序目前的设计方式是我通过应用程序委托的属性提供一些中央服务和对象。例如,我集中了一些核心数据功能,可以通过[UIApplication sharedApplication].coreData访问。

我遇到的问题是,为了在设备或模拟器上运行单元测试,GHUnit使用它自己的app委托,它没有这些属性。因此,如果一个单元触发了想要访问它们的代码,它就会失败。

所以我正在研究应用程序的设计,并想知道我是否应该重新设计这些核心设施的可用方式。你们是如何设计你的应用程序的?

我正在考虑的一件事是将此功能提取到一个单独的对象,以便我可以使用OCMock来模拟它以进行测试。

有什么想法吗?

2 个答案:

答案 0 :(得分:0)

在考虑了这一段时间后,我意识到有一个更简单的解决方案。我创建了一个带有app delegate接口的类别,该接口适用于运行测试时使用的GU Unit app委托。通过这种方式,我可以运行测试并在必要时使用此类别返回OC Mocks。

答案 1 :(得分:0)

另一种技巧。这次我扩展了GH Unit测试iPhone应用程序委托,并添加了我需要的方法和属性。然后我修改了主类来调用它而不是原始类。

啊,有很多方法可以达到同样的效果: - )