Joh*_*nny 6 xcode unit-testing ios swift
我有一个由Swift 3.0编写的iOS应用程序项目,工作区包含一个由我们团队构建的动态框架,用于在整个项目中共享可重用的代码和资源。
我们Activate Compilation Conditions用于切换生产服务器URL和Beta服务器URL,如下所示:
#if DEBUG
let url = "http://my-beta-server-url"
#else
let url = "http://my-production-server-url"
Run Code Online (Sandbox Code Playgroud)
这样,当应用程序被存档时,该URL将切换到生产服务器URL。并且在调试时,我们可以使用beta服务器进行开发。
我们有一个用于测试此框架的单元测试目标。最近,我们想添加一个简单的健全性测试,以检查发布模式下的网址是否正确。
如果要测试此行为,则必须将Test目标的Build configuartion标志设置Release为。
将其设置Release为时,Xcode会编译错误:
Module XXXXFramework was not compiled for testing
为了解决这个问题,我们可以简单地为我们的框架设置Enable Testability为。ReleaseYes
但是,问题在于,Enable Testability根据此说明,Apple不建议将“发布”模式设置为“是”。
可测试性:无需公开内部例程即可编写Swift 2.0框架和应用程序的测试。在测试源代码中使用@testable import {ModuleName},以使所有公共例程和内部例程均可用。应用或框架目标需要在“启用可测试性”构建设置设置为“是”的情况下进行编译。启用可测试性构建设置应仅在调试配置中使用,因为它禁止依赖于不从应用程序或框架中导出内部符号的优化。(17732115)
有没有人提出解决我的问题的建议,或者有其他替代解决方案来实现我的目标?
用于使用发布模式测试框架
我为您创建了一个示例项目。您的设置可能有所不同,但此示例项目将演示如何测试发布 url 和调试 url,完成编辑方案设置。这是链接https://github.com/borg666/ios-multi-scheme-config-example
基本上,技巧是有另一个方案,其中调试标志被禁用,并且它运行一个单独的测试文件,您可以在其中测试发布 URL,通过这样做,您可以自由地启用此方案的可测试性。
您可能会考虑为 url 使用用户定义的变量,通过我的示例,您可以实现更复杂的配置。