我遇到了一个问题,我的框架需要访问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?