我最近更新到Xcode 7 beta 5。我尝试在早期的项目中添加一个单元测试,但是我在@可测试的导入myModuleName行上得到了错误消息“没有这样的模块[myModuleName]”。

我试着

使用“选项清理生成文件夹”清理项目 检查“启用可测试性”(调试)在构建选项中设置为“是” 删除测试目标,然后重新添加iOS单元测试包

这些都不适用于这个项目(但是我已经在另一个项目中进行了测试)。有人遇到过这个问题并解决了吗?


当前回答

这里还有一件没有列出的事情需要检查。对我来说,这与我的团队有关,也许是因为我们团队的经纪人还没有同意最新的许可协议!一旦我在目标的一般设置中选择了一个不同的团队,然后我指定了一个特定的部署目标,比如12.1或11.0,突然“没有这样的模块”警告消失了。

其他回答

在项目导航器中单击MyAppTests.swift,然后单击右侧面板,在目标会员中检查模块。它在我的工作。

另一件需要检查的事情:如果你有一个Objective-C项目,但正在用Swift编写单元测试,确保主目标至少使用一个Swift文件!


更多信息:

我当时在做一个Objective-C项目,但想用Swift写单元测试。

我在主目标中添加了一个Swift文件,以生成必要的ProjectName-Bridging-Header.h文件,编写了测试,一切都正常工作。

后来我删除了Swift文件,因为我认为我不需要它(所有主要目标的代码都是Objective-C…我只是在Swift中编写测试)。

直到后来我才注意到这个问题,在我做了一个“清洁/清洁构建文件夹”之后,“没有这样的模块”问题出现了。经过一番思考,我添加了一个新的空白Swift文件,问题就消失了。

我已经测试了很多次,有/没有Swift文件,它只适用于它…所以,我要么需要在项目中留下空白文件,将一些Objective-C转换为Swift,要么添加一些用Swift编写的新代码到项目中。

对我来说,解决办法就是重新命名 导入myproject_ios 来 导入myproject 在我更新了目标myproject-ios的产品名称在构建设置/包装/产品名称/从${TARGET_NAME}到myproject。

确保在测试方案的构建设置下,测试目标在列表中。

在播放按钮旁边,选择测试方案,然后编辑方案…,转到Build部分,单击+ +并选择您想要测试的目标。

在我的例子中,我们有一个我们开发的内部目标(一些微小的差异),在合并之后,它被从测试配置中删除了。

因此,在尝试了之前建议的所有解决方案后,这就是我如何让我的代码工作的。

I set 'Enable testability' to 'YES' in project's Build Settings I also set 'Defines Module' to 'YES' in my project's Build Settings. For the regular .swift file(s) within my project, say MyApp, I was going to write test cases for, I have both the main "MyApp" and the "MyAppUnitTests" Targets checked under Target Membership. I then selected my unit test file(s), declared the '@testable import MyApp' at the top, beneath the 'import XCTest', and only checked the "MyAppUnitTests" under Target membership

一切都很顺利。希望这能有所帮助。