如何获取iOS Framework测试目标并在虚拟应用程序中运行它?

所以我遇到了一个问题,我的框架需要访问KeyChain 。 这没关系,但在模拟器中运行时似乎失败了。 挖掘它似乎是一个已知的问题, xctest在这里做错了。 很公平,错误发生了。 在Apple Developer论坛中,我们将在此讨论:

对。

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

AFAIK没有直接的解决方法。 但是,我相信您可以通过在您的应用程序中运行此测试代码来避免此问题 (强调我的)(在文档中称为app测试)。

因为这些会在您的应用内部运行,所以他们会获得应用的权利。 如果您没有方便的应用程序, 您可以创建一个虚拟的应用程序来托管测试。 (强调我的怎么做?

请尝试一下,如果您遇到任何障碍,请告诉我们。 哦,并且不要让变通方法的可用性阻止您提交有关此问题的错误。 Xcode应该能够使用权利运行库测试,而最近的钥匙串更改使这一点变得更加重要。 分享和享受

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? 

啊,这篇文章有帮助:

https://medium.com/@ryuichi/setup-host-app-for-keychain-tests-in-xcode-8-97222611917e#.z3zpqwnzt

我正在添加一个全新的应用程序项目,我只需要在Framework项目中为Single View Application添加一个新的Target

然后,我可以在测试目标中选择Host Application

使用我之前的图表,最终的结果是:

 Framework Project | |- Unit Test Target |- Framework Target |- Dummy App Target 

在此处输入图像描述