如何将iOS框架测试目标运行在虚拟应用程序中?

17

我遇到了一个问题,我的框架需要访问KeyChain。这没问题,但当在模拟器中运行时似乎会失败。挖掘一下发现这是一个已知问题,xctest在这里做错了事情。很公平,错误总会发生。在苹果开发者论坛上讨论了这个问题:

没错。

这是一个众所周知的库测试问题(有时被Xcode称为逻辑测试)。这些测试由一个没有权限的工具(xctest)运行。从历史上看,这给使用自定义权限(例如访问CloudKit)的人带来了问题,但现在也影响了使用keychain的人。

据我所知,没有直接的解决方法。然而,我认为您可以通过在应用程序内运行此测试代码来避免问题(强调我的内容)(在文档中,这称为应用程序测试)。

因为这些运行在您的应用程序内部,它们获取应用程序的权限。 如果您没有方便的应用程序,请创建一个虚拟的应用程序来托管测试。(重点在“如何做到这一点?”)

请尝试此操作并告诉我们是否遇到了任何问题。 噢,不要让解决方法的可用性阻止您报告错误。Xcode应该能够带权限运行库测试,而这个最近的keychain变化使这更加重要。 分享和享受

https://forums.developer.apple.com/message/179846(请参见Eskimo在2016年11月4日上午2:12的回复)

他在另一个回复中再次提到:

  • 您可以通过在应用程序中运行测试来避免此问题,如果没有可用的应用程序,则可以创建虚拟应用程序。
  • 随时针对此限制提出自己的错误报告。

所以他再次引用:

您可以通过在应用程序中运行测试来避免此问题,如果没有可用的应用程序,则可以创建虚拟应用程序。

我非常愿意这样做,只是似乎无法弄清楚如何做到这一点。

我有的部分:

Framework Project
    |
    |- Unit Test Target
    |- Framework Target

Dummy App Project
    | 
    |- ??? How do I make this run the Framework's Unit Test Target?
1个回答

27
啊,这篇文章很有帮助: https://medium.com/@ryuichi/setup-host-app-for-keychain-tests-in-xcode-8-97222611917e#.z3zpqwnzt 我正在添加一个全新的应用程序项目,我只需要为框架项目添加一个新目标,以创建一个“Single View Application”的项目。
然后,这使我可以在测试目标中选择“主机应用程序”。
使用我之前的图表,最终有效的结果是:
Framework Project
    |
    |- Unit Test Target
    |- Framework Target
    |- Dummy App Target

输入图像描述


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接