这样的集成测试可能吗?

Posted

技术标签:

【中文标题】这样的集成测试可能吗?【英文标题】:Are integration tests like that possible? 【发布时间】:2018-03-16 04:09:57 【问题描述】:

在 Xcode 中似乎有两种测试,一种是 UI 测试,它使用自动化测试在另一个进程中运行的应用程序,另一种是单元测试,其中单独测试小单元代码。我想知道某处是否有中间立场...

例如,如果我运行单元测试,则会在内存中启动一个我不使用的完整应用程序,因为我正在实例化我需要在我的测试用例类中测试的类。 (我只知道它在那里,因为我在模拟器窗口中看到它,而且我的测试类有时不小心使用通知中心与它通信。)

如果我可以使用这个应用程序进行集成测试,那就太好了。它们类似于 UI 测试,但速度更快,而且我可以访问实现。例如,我可以这样做以安装模拟,这样我就可以模拟远程端点的行为,并从用户的角度查看某些响应的效果。

问题是:是否有一种好的(记录在案的)方法可以在 XCTest 上下文中使用 mock 启动应用程序并找到单元测试和 UI 测试之间的中间地带?

【问题讨论】:

【参考方案1】:

有趣的是,前几天我们也遇到了这种问题。我不确定这些信息是否对您有所帮助。

因此,对您的具体问题的简短回答是,苹果文档(AFAIK)中没有专门说明如何在测试中制作模拟类的书面文档,但这并不一定意味着您不能制作一个。您可以通过多种方式制作模拟场景以使用您的代码

手动方式:使协议/接口由工作类和模拟类实现,覆盖工作类的特定方法以以某种方式模拟结果,混合等。

第 3 方方式:知名人士(OCMock、Mockito)

在目标 c 的情况下,那里有很多 'em 3rd 方,但由于 swift 对其运行时库的支持(swift 尚未完全暴露其运行时库)

这里有一个有用的链接:https://academy.realm.io/posts/tryswift-veronica-ray-real-world-mocking-swift/(很棒的文章)

干杯

【讨论】:

以上是关于这样的集成测试可能吗?的主要内容,如果未能解决你的问题,请参考以下文章

集成测试基本内容概述

为什么一定要做集成测试?

Flutter 集成测试 - 状态不佳,无元素

单元测试术语的概述(存根与模拟,集成与交互)?

集成测试环境和集成测试应坚持的原则

什么是集成测试和UI测试