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

发布于 2024-09-30 12:36:00 字数 576 浏览 1 评论 0原文

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

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

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

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

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

有什么想法吗?

I'm currently using GHUnit and OCMock for testing my app. I'm using them because I like the fact that I can run test code on the actual device.

The way my app is currently designed is that I have some central services and objects available through properties on the app delegate. For example, I've centralised some core data functionality which can be accessed by [UIApplication sharedApplication].coreData.

The problem I've encountered is that in order to run unit tests on the device or simulator, GHUnit uses it's own app delegate which doesn't have these properties. So if a unit triggers code which wants to access them, it fails.

So I'm looking at the design of the app and wondering if I should redesign the way these core facilities are made available. How do you guys design your apps?

One thing I'm considering is extracting this functionality out to a separate object so that I can then use OCMock to simulate it for testing purposes.

Any thoughts?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

邮友 2024-10-07 12:36:00

经过思考一段时间后,我意识到有一个更简单的解决方案。我使用应用程序委托的接口创建了一个类别,该类别适用于运行测试时使用的 GU 单元应用程序委托。这样我就可以运行测试并在必要时使用此类别返回 OC Mock。

After thinking about this a while I realised there was a simpler solution. I created a category with the app delegate's interface which applies to the GU Unit app delegate used when running the tests. This way I can get the tests to run and use this category to return OC Mocks when necessary.

晨曦慕雪 2024-10-07 12:36:00

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

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

And another technique. This time I extended the GH Unit test iPhone app delegate and added the methods and properties I needed. I then modified the main class to call that instead of the original.

Ahhh, so many ways to achieve the same result :-)

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文