如何在主应用程序目标中使用单元测试用例(作为 test_spec 添加到开发 pod)?

Posted

技术标签:

【中文标题】如何在主应用程序目标中使用单元测试用例(作为 test_spec 添加到开发 pod)?【英文标题】:How to use unit test cases (added to a development pod as test_spec) in the main app target? 【发布时间】:2018-08-28 12:44:51 【问题描述】:

假设我有一个 pod DevelopmentPod

在这个 pod 的 podspec 中,我添加了一个 test_spec 如下 -

s.test_spec 'UnitTests' do |test_spec|
test_spec.source_files = 'UnitTests/**/*.h,m,swift'
test_spec.ios.resources = ['UnitTests/**/*.json']
end 

在我项目的Podfile中,我添加了如下的pod -

pod 'DevelopmentPod', :path => '<location>', :testspecs => ['UnitTests']

运行 pod install 后,我看到一个新目标 DevelopmentPods-Unit-Tests 已创建,并使用 Manage Schemes 中的新方案,我可以执行测试舒适的情况下。

要将此方案集成到 Jenkins 中,我需要为此单独工作。而且我有多个开发吊舱,这意味着多个工作。然后还必须整合来自不同作业的测试用例执行数据。而且我们不能确定性地说这些单独作业测试的代码与实际构建的代码相同。

解决这个问题的最佳方法是什么?

我可以轻松地将所有单元测试从不同的 pod 移动到我的主应用程序并为其创建一个单元测试目标(这也解决了 Jenkins 工作问题)但是我的主应用程序将被大量单元测试代码弄得一团糟它根本不需要。我想在 pod 本身中保留一个特定于 pod 的单元测试。

【问题讨论】:

只是一个意见 - 你的主应用程序不应该关心你的 pod 的内部测试。您应该在主应用程序中创建一组单独的测试来测试您的应用程序与 pod 的集成。 @Losiowaty 我不能同意更多。即使我不希望我的主应用程序关心 pod 的内部测试。但问题在于 Jenkins 集成。基本上我想要的是 jenkins 上的单个作业应该能够在不同的 pod 上运行所有测试,然后如果测试成功则创建一个 ipa。并且还应该提供执行的测试的综合数据。在每个 pod 中为 unitTests 创建了不同的方案,我需要不同的作业来运行不同的方案,因此这根本不可扩展。 再次——这个过程不应该依赖于这些测试,IMO——就像它不依赖于你使用的外部依赖项的测试一样。您的内部 pod 应该有单独的流程和发布,并且您应该“相信”它可以工作,只测试您与 pod 的集成。无论如何——直截了当——你看过xcodebuild command line tool吗?您应该能够创建运行所有测试方案的相当简单的脚本。 如果您能指出我使用 xcodebuild 命令行工具的正确方向,我将不胜感激?此外,我所说的 pod 是内部 pod,而不是外部 3rd 方 pod。例如,我们有一个用于配置文件管理的 pod。那么对于在这些单独的 pod 中进行测试,最好的方法是什么?我是否应该在所有这些 pod 中创建 podfile 并创建一个项目来执行测试并为所有这些项目创建作业? 【参考方案1】:

一旦您有了目标,您需要编辑您的方案以使其运行测试!

然后将其设置为进行测试(通过将其添加到+)

它也会自动添加到构建中

它完成了! :D

【讨论】:

以上是关于如何在主应用程序目标中使用单元测试用例(作为 test_spec 添加到开发 pod)?的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 Kafka Streams 为应用程序编写单元测试用例

Junit单元测试反射注解

在单元测试用例的 TFS 构建中找不到路径的一部分

如何在单元测试中模拟缺乏网络连接

模拟 API 响应时如何在单元测试中使用 JSON 文件

是否可以在 IOS 的 XCTest 单元测试用例中模拟方法(带参数)调用