我正在使用一些私有API来访问UI测试中的源代码。 我将UI测试中的代码或资源与源代码一起提交给Apple进行审核吗?
答案 0 :(得分:2)
对我来说,这使得Apple的原生UI测试包处于极大的劣势。这对于iOS来说不是一个大问题,因为有太多第三方软件包允许您在单元测试包之上测试UI并且一起避开UI包。如果您正在开发没有相同支持的tvOS或macOS项目,情况就不那么好了。目前,用于UI测试的tvOS目前已被打破。
最后,为了通过UI测试真正测试您的应用程序,您将不得不做更多的工作来使本地工作。大多数答案会告诉您使用-launchEnvironment
或-launchArguments
传递您的应用运行UI测试所需的任何数据。我可以告诉你这确实有效,但是它无法让你知道需要多少额外的工作来使这项工作有效。 UI测试的任何数据模拟或存根都需要使用生产代码。在中,您必须包含启动参数和环境变量的逻辑,并在运行时更改您的应用程序。如果你问我,这不是一个很好的方法,但可以做到。
最后,我最终牺牲了一小部分生产代码,以保证我可以运行UI测试并保护应用程序的大部分内容。我已经构建了自己的网络库来调用我需要的数据,因此它允许我编写一个" test"网络请求的路径,允许我返回API调用所需的数据。本质上是用户的自定义文件名和url和参数的哈希,让我的网络库返回该API的特定有效负载。一旦它工作,它工作得很好。我仍然觉得这样做有点脏,但确实有效。
没有任何试验和错误允许我在UI测试中模拟或存根数据。最后,它将测试数据编程到应用程序中并使用launch args。越过WWDC 17的手指将有更好的消息。
答案 1 :(得分:0)
不,他们不可见。
@testable仅提供“内部”功能的访问权限; “私人的” 即使使用,声明也不会在文件外部显示 @testable。