iOS - 从发布版本中排除测试文件

Posted

技术标签:

【中文标题】iOS - 从发布版本中排除测试文件【英文标题】:iOS - Exclude Test files from Release build 【发布时间】:2017-03-10 08:13:48 【问题描述】:

在开发 ios 应用程序时,我需要在预加载的数据库上运行单元和 ui 测试。因此,我计划在应用程序中包含预加载的 DB 文件,仅用于 DEBUG 构建,因为 UI/单元测试将仅在 DEBUG 构建中运行。如何从发布版本中排除数据库文件?

目前我可以使用以下方式检测宿主应用程序是否正在运行以进行测试,

https://***.com/a/33466038/1084174,

但是如何使用这种技术排除和包含 database.db?

我们将不胜感激。

【问题讨论】:

【参考方案1】:

我终于解决了这个问题。

    打开您的项目文件。在屏幕底部单击 Add Build Setting -> Add User Defined Setting 并将其命名为 EXCLUDED_SOURCE_FILE_NAMES。

    单击 EXCLUDED_SOURCE_FILE_NAMES 左侧的箭头将其展开。在此变量的 Release 配置中,添加 libTestFlight.a 和您想要排除的任何其他文件(以空格分隔)。

【讨论】:

【参考方案2】:

执行此操作的标准方法是在 Xcode 中创建一个新目标以用于调试。然后您可以在文件上使用目标选择器

在这里你可以看到我有一个源文件,它包含在我的主要目标中,但没有包含在我的消息扩展中。这出现在屏幕右侧的实用程序窗格中。您可以通过在调试目标中包含文件而不是发布(反之亦然)来实现相同的目的。

【讨论】:

我目前有四个目标,App、Widget、Tests、UITests,你是说要添加另一个目标吗? @SazzadHissainKhan 我愿意。您的App 目标基本上将成为您的发布目标。我会复制这个目标并将新目标称为App - Staging,然后您可以切换哪些文件属于每个目标。然后,您可以为此版本设置各种不同的选项和配置。

以上是关于iOS - 从发布版本中排除测试文件的主要内容,如果未能解决你的问题,请参考以下文章

如何从 CPack 的源代码版本中排除我的构建目录?

从 JBoss 7 EAP 中排除提供的 jackson 版本

从 PIT 执行中排除测试

当我们在TFS中获得最新版本的排除文件时会发生什么?会更新吗?

从源代码管理中排除 app.config?

需要从 spring boot 2.0 中排除 spring-orm 模块并从 jar 文件中使用它的旧版本