我最近更新到Xcode 7 beta 5。我尝试在早期的项目中添加一个单元测试,但是我在@可测试的导入myModuleName行上得到了错误消息“没有这样的模块[myModuleName]”。
我试着
使用“选项清理生成文件夹”清理项目 检查“启用可测试性”(调试)在构建选项中设置为“是” 删除测试目标,然后重新添加iOS单元测试包
这些都不适用于这个项目(但是我已经在另一个项目中进行了测试)。有人遇到过这个问题并解决了吗?
我最近更新到Xcode 7 beta 5。我尝试在早期的项目中添加一个单元测试,但是我在@可测试的导入myModuleName行上得到了错误消息“没有这样的模块[myModuleName]”。
我试着
使用“选项清理生成文件夹”清理项目 检查“启用可测试性”(调试)在构建选项中设置为“是” 删除测试目标,然后重新添加iOS单元测试包
这些都不适用于这个项目(但是我已经在另一个项目中进行了测试)。有人遇到过这个问题并解决了吗?
当前回答
因此,在尝试了之前建议的所有解决方案后,这就是我如何让我的代码工作的。
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
一切都很顺利。希望这能有所帮助。
其他回答
这个答案对我很管用
答案是我的项目中出现了一些错误,导致构建失败。(这只是代码中标准的日常错误。)在我修复了错误并进行了另一次清理和构建后,它工作了。
请注意,这些错误一开始并没有出现。为了让他们出现:
注释掉给出“No such module”错误的整个Test文件。 试着重新运行你的项目。
如果还有其他错误,现在就应该显示出来。修复它们,然后取消测试文件代码的注释。对我来说,“没有这样的模块”错误已经消失了。
如果这不能解决其他人的问题,你也可以尝试以下方法:
清理构建文件夹
打开“产品”菜单,按住“选项”,然后单击“清洁构建文件夹…”
确保启用可测试性设置为Yes
在项目导航器中单击项目名称。选择生成设置并向下滚动到生成选项。确保“启用可测试性”为“是”(用于调试)。
删除并重新添加测试目标
如果你已经做了其他的事情,我猜你可能不需要做这个。但是如果你这样做了,记得保存你已经写好的单元测试。
在project Navigator中单击项目名称。然后选择测试目标。点击底部的减号(-)按钮删除。
然后点击加号(+)按钮,选择iOS单元测试包再次添加它。正如您所看到的,您还可以以相同的方式添加一个UI Testing Bundle。
还有其他一些想法
确保所有必需的类都是测试目标的成员。 确保您已经添加了所有必需的库。 确保模块名称写得正确(参见这个答案)。
还是……
如果你发现了其他有用的方法,请在下方留言或回答。
相关的
如何在Xcode中进行单元测试 Xcode UI测试示例
尝试了所有的解决方案。毫无效果。Xcode构建命令行在swift包模块未发现错误时失败。
错误:没有阿波罗模块 进口阿波罗
删除测试目标并重新添加它们对我来说是有效的。
对于那些一直滚动到最后一个答案仍然没有工作的人,这里是我在遵循所有其他答案建议后所做的事情。我使用的是Xcode 11:
在我的情况下,导致问题的原因是我更改了我的产品名称
我在主目标的构建设置中将产品名称更改为“新名称” 我必须为测试目标重新选择主机应用程序 我不知道更改产品名称也会更改产品模块名称,这是我的测试文件中用于模块导入的名称。我修改了我的import如下: @可测试导入New_Name 它工作
我希望这对你们有帮助
另一件需要检查的事情:如果你有一个Objective-C项目,但正在用Swift编写单元测试,确保主目标至少使用一个Swift文件!
更多信息:
我当时在做一个Objective-C项目,但想用Swift写单元测试。
我在主目标中添加了一个Swift文件,以生成必要的ProjectName-Bridging-Header.h文件,编写了测试,一切都正常工作。
后来我删除了Swift文件,因为我认为我不需要它(所有主要目标的代码都是Objective-C…我只是在Swift中编写测试)。
直到后来我才注意到这个问题,在我做了一个“清洁/清洁构建文件夹”之后,“没有这样的模块”问题出现了。经过一番思考,我添加了一个新的空白Swift文件,问题就消失了。
我已经测试了很多次,有/没有Swift文件,它只适用于它…所以,我要么需要在项目中留下空白文件,将一些Objective-C转换为Swift,要么添加一些用Swift编写的新代码到项目中。
如果你的项目中有一些目标- 检查你的目标模块名称,你试图导入@可测试导入"TARGETSModuleName"。
模块名应该在: 目标->构建设置->产品模块名称
例如: