添加第三方框架后的UITest

问题描述

我的应用程序包含可以正常运行的XCUI测试。通过Cocoapods添加了一个第三方框架,该框架工作正常,但是用“ {Module 'My_App' was not compiled for testing”破坏了UI测试。 'Module was not compiled for testing' when using @testable中对此进行了彻底解决,该建议建议通过启用测试进行干净的框架安装(因为该框架是发行(而非调试)版本)。

一种不同的方法可能是#if框架的代码,并使用编译器指令消除它,以允许UI测试除此以外的所有内容。除非您不能使用编译器指令来跳过import语句。通过在链接时将库设置为可选,可以解决Conditionally import a framework (such as Speech) based on iOS Version in Swift?中的问题。

我认为

Unit testing with third party libraries and Carthage对此稍有讨论,只是它试图直接在第三方框架上运行测试。我只想测试我的代码,并且可以完全跳过其他框架。

问题是,使用第三方框架时,哪种是对主应用程序进行持续UI测试的最佳方法?如果我在Podfile中全新安装了框架,是否必须为发布版本禁用该测试标志,然后再次启用它进行测试,然后再次禁用它进行发布,等等?如果我改用编译器指令和#if对框架的引用,即使没有引用导入中的内容,框架的导入是否足以在UI测试中留下相同的初始错误?

这两种方法都进入了可能使我感到困惑的编译和链接的深度。在导入第三方框架时,寻找用于配置UI测试的最可靠设置。谢谢!

编辑:通过编译器指令“消除”第三方代码是非解决方案,因为仍在检查对框架类型的引用。

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...