Swift 如何对私有Cocoapods库进行单元测试?

Swift 如何对私有Cocoapods库进行单元测试?,swift,unit-testing,xctest,swift5,Swift,Unit Testing,Xctest,Swift5,我正试图找出如何为我的私人cocoapod库设置单元测试 以下是预期结果: 我在“Pods”项目中添加了一个单元测试目标“MyPodTests”,然后将目标更改为我的“MyPodTests”方案。然后我为我的单元测试创建了测试类。我现在可以选择我的“MyPodLib”方案并按下CMD+U,测试目标执行测试。这就是我想要的行为 然而,这种方法有一些缺点。如果我在我的示例应用程序上执行“pod更新”或“pod安装”,测试目标就消失了。如果我在我的示例应用程序上调用pod更新,测试也会消失。我相信有一

我正试图找出如何为我的私人cocoapod库设置单元测试

以下是预期结果:

我在“Pods”项目中添加了一个单元测试目标“MyPodTests”,然后将目标更改为我的“MyPodTests”方案。然后我为我的单元测试创建了测试类。我现在可以选择我的“MyPodLib”方案并按下CMD+U,测试目标执行测试。这就是我想要的行为

然而,这种方法有一些缺点。如果我在我的示例应用程序上执行“pod更新”或“pod安装”,测试目标就消失了。如果我在我的示例应用程序上调用pod更新,测试也会消失。我相信有一个正确的方法可以做到这一点。此外,我希望防止将测试类加载到使用库的任何使用者中,因此我在我的podspec中添加了一个排除项:

s.exclude_files = 'Pod/Classes/**/Test/*'

当我选择MyPodLib并按CMD+U时,什么都没有发生,如果我选择MyPodTests并按CMD+U,则不会抛出此类模块“MyPodLib”错误。

您可能希望测试独立于示例应用程序运行。如果是这种情况,请在pod规范中添加一个测试子类,并设置其源文件

例如,假设您有一个Xcode项目,其框架目标为MyFramework,测试目标为MyFrameworkTests。您的吊舱规格如下所示:

Pod::规格新do | s| s、 name=MyFramework s、 版本=1.0.0 s、 summary=MyFramework功能的摘要 s、 主页=https://www.website.com s、 许可证={:type=>MIT,:file=>license.txt} s、 作者=Ramesh Boosa s、 平台=:ios,11.0 s、 swift_版本=[5.0,5.1] s、 source={:git=>https://github.com/MyName/MyFramework.git,:tag=>v{s.version} s、 source_files=MyFramework/*.swift s、 测试规格do测试| test.source_files=MyFrameworkTests/*.swift 终止 终止 要删除pod规范并运行单元测试,请执行pod规范lint MyFramework.podspec

如果您的示例应用程序包含在pod中,您可以将应用程序主机添加到podspec中。报告有更多细节