在UI测试中,我可以使用私有API吗?

时间:2016-10-13 20:40:01

标签: xcode xcode-ui-testing

我正在使用一些私有API来访问UI测试中的源代码。 我将UI测试中的代码或资源与源代码一起提交给Apple进行审核吗?

2 个答案:

答案 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。