如何在发布模式下启用框架的可测试性?

2024-01-22

我有一个 iOS 应用程序项目,由 Swift 3.0 编写 该工作区包含我们团队构建的动态框架,用于在整个项目中共享可重用的代码和资源。

We use Activate Compilation Conditions用于切换生产服务器 url 和测试服务器 url,如下所示:

#if DEBUG
let url = "http://my-beta-server-url"
#else
let url = "http://my-production-server-url"

这样,当应用程序存档时,url 将切换到生产服务器 url。 并且在调试时,我们可以使用beta服务器进行开发。

我们有一个单元测试目标来测试这个框架。 最近我们想添加一个简单的完整性测试来检查发布模式下的 url 是否正确。

如果我们想测试这种行为,我们必须设置Build configuartion标记为Release为测试目标。

当设置为Release,Xcode编译报错:

Module XXXXFramework was not compiled for testing

为了解决这个问题,我们只需简单设置Enable Testability for Release to Yes对于我们的框架。

然而,问题是苹果不建议设置Enable Testability根据此将发布模式设置为“是”note https://developer.apple.com/library/content/releasenotes/DeveloperTools/RN-Xcode/Chapters/Introduction.html#//apple_ref/doc/uid/TP40001051-CH1-SW326

可测试性:编写 Swift 2.0 框架和应用程序的测试 无需公开内部例程。使用@testable导入 测试源代码中的 {ModuleName} 以将所有内容设为公共和内部 可用的例程。应用程序或框架目标需要编译 将“启用可测试性”构建设置设置为“是”。启用 可测试性构建设置应仅在调试中使用 配置,因为它禁止依赖于不的优化 从应用程序或框架导出内部符号。 (17732115)

有人对解决我的问题有建议,或者有任何替代解决方案来实现我的目标吗?

用于使用发布模式测试框架


我为您创建了一个示例项目。您的设置可能有所不同,但此示例项目将演示如何测试发布 url 和调试 url,完成编辑方案设置。链接在这里https://github.com/borg666/ios-multi-scheme-config-example https://github.com/borg666/ios-multi-scheme-config-example

基本上,技巧是有另一个方案,其中调试标志被禁用,并且它运行一个单独的测试文件,您可以在其中测试发布 URL,通过这样做,您可以自由地启用此方案的可测试性。

您可能会考虑为 url 使用用户定义的变量,通过我的示例,您可以实现更复杂的配置。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何在发布模式下启用框架的可测试性? 的相关文章

随机推荐

  • 为什么我的 CSS 样式没有被应用?

    我有这个html p span class fancify Parting is such sweet sorrow span span Bill Rattleandrollspeer span p 以及这个 css 添加到 Site cs
  • 我如何从库比蒂诺日期选择器中隐藏一天

    我只需要从日期选择器中获取年份和月份 那么如何从日期选择器中隐藏日期 CupertinoDatePicker initialDateTime DateTime now onDateTimeChanged DateTime newdate p
  • 使用 mapbox-gl-js 集群自定义 html 标记

    我正在使用 mapbox gl js API 并将其与 React 一起使用来创建一些自定义标记 如下所示 let div document createElement div let marker new mapboxgl Marker
  • 在 R 中绘制相关矩阵,如 Excel 示例所示

    我一直在尝试尽量减少对 Excel 的使用 转而使用 R 但在显示简单的数据单元格时仍然遇到困难 而这通常是分析的最后一步所需要的 以下示例是我想要破解的示例 因为它将帮助我切换到 R 来完成工作流程的这一关键部分 我想说明 R 中的以下相
  • Android 上的 WiFi Direct 无法正常工作

    我正在尝试在 android Jelly Bean 4 1 1 中直接使用 wifi 开发一个应用程序 如果启用了 p2p 我会立即致电 mManager discoverPeers mChannel actionListener 之后我会
  • Matplotlib:将颜色条添加到不可映射的对象

    我有一系列代表变量变化的线 每个都有独特的颜色 因此 我想在绘图旁边添加一个颜色条 所需的输出如下所示 问题是plot是不可映射的对象 即必须手动添加颜色条 我认为我当前的解决方案 如下 不是最佳的 因为它涉及我没有兴趣控制的尺寸参数 我更
  • 有没有一种简单的方法可以在 matplotlib 中为滚动垂直线设置动画?

    我想要一个我所描述的进度标记 它在音频播放实用程序中似乎很常见 我认为在 matplotlib 中这相当于左 右动画plt vlines 我的代码采用 2 秒的数据数组并创建音频时间序列可视化 我正在努力创建一条动画垂直线 该线会在绘图上从
  • Windows上使用R将本地repo推送到github

    我曾经问过一个很类似的问题 https stackoverflow com questions 14912161 repo from rstudio to github并得到了从命令行有效的响应 但我现在想使用 R 从 Windows 自动
  • ASP.NET MVC 中的 RSS 源

    您建议如何在 ASP NET MVC 中处理 RSS 源 使用第三方库 在 BCL 中使用 RSS 内容 只是制作一个呈现 XML 的 RSS 视图 或者完全不同的东西 NET 框架公开了处理聚合的类 SyndicateFeed 等 因此
  • 如何在 iPad 中使用图像选择器?

    我知道如何在 iPhone 中使用图像选择器 虽然知道需要在 iPad 中使用新类 UIPopoverController 但仍然无法找出一种在 iPad 中使用图像选择器的方法 有人有同样的问题吗 谢谢 UIImagePickerCont
  • 使用 Groovy MarkupBuilder 的 HTML,如何优雅地混合标签和文本?

    使用 Groovy 时MarkupBuilder 我有需要将文本输出到文档中的地方 或者调用将文本输出到文档中的函数 目前 我正在使用未定义的标签 text 进行输出 有更好的方法来编写这段代码吗 li text type getAlias
  • 自动续订订阅:一个月有多长?

    我对一些问题感到困惑 1 自动续费订阅的一个月期限是30天还是按照自然月 因为我只能在沙盒模式下测试 所以持续时间只有几分钟 也许苹果只是简单地这样计算 2013 01 15 gt 2013 02 15 gt 2013 03 15 如果是这
  • r 在 for 循环中创建并寻址变量

    我在一个文件夹中有多个 csv 文件 我想将此文件夹中的每个 csv 文件加载到一个单独的数据框中 接下来 我想从该数据框中提取某些元素到一个矩阵中 并计算所有这些矩阵的平均值 setwd D data group 1 lt list fi
  • CMDeviceMotion 用户加速度漂移

    我正在使用以下方法获取加速度数据 CMDeviceMotion userAcceleration 我注意到一件有趣的事情 Z 轴上总是有一个小偏差 约为 0 0155 方差为 0 002 而在其他轴上 平均值接近 0 我正在使用 iPod
  • 查看 IsEnabled 属性在 Xamarin Forms 上不起作用

    这是我的列表视图 Listview 内部按钮 IsEnabled 属性不起作用 IsEnabled False 不起作用 我遵循了此步骤 但仍然不起作用https forums xamarin com discussion 47857 se
  • 寻找一个Linux PDF库来从PDF中提取注释和图像[关闭]

    Closed 这个问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 我正在寻找一个免费的库 Java Ruby 它可以在linux上运行 并且可以从PDF中提取图像和注释
  • 从文件流上传到 ADLS

    我正在 ADF 中进行自定义活动 其中涉及从 Azure 存储 Blob 读取多个文件 对它们进行一些处理 最后将生成的文件写入 Azure Data Lake Store 最后一步是我停止的地方 因为据我所知 NET SDK 只允许从本地
  • .NET 应用程序中的最大线程数?

    在 C 应用程序中可以创建的最大线程数是多少 当达到这个限制时会发生什么 是否抛出某种异常 没有固有的限制 最大线程数由可用物理资源量确定 看到这个文章作者 雷蒙德 陈 https devblogs microsoft com oldnew
  • 使用 JavaMail 创建带有附件的 EML 文件 [关闭]

    这个问题不太可能对任何未来的访客有帮助 它只与一个较小的地理区域 一个特定的时间点或一个非常狭窄的情况相关 通常不适用于全世界的互联网受众 为了帮助使这个问题更广泛地适用 访问帮助中心 help reopen questions 我将使用
  • 如何在发布模式下启用框架的可测试性?

    我有一个 iOS 应用程序项目 由 Swift 3 0 编写 该工作区包含我们团队构建的动态框架 用于在整个项目中共享可重用的代码和资源 We use Activate Compilation Conditions用于切换生产服务器 url