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

我试着

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

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


当前回答

在构建设置测试目标中,检查主机测试,它接受PRODUCT_NAME中设置的名称。 您应该在测试类中使用这个名称。

我建议不要更改PRODUCT_NAME(匹配主目标的名称)

其他回答

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


更多信息:

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

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

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

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

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

这个答案对我很管用

答案是我的项目中出现了一些错误,导致构建失败。(这只是代码中标准的日常错误。)在我修复了错误并进行了另一次清理和构建后,它工作了。

请注意,这些错误一开始并没有出现。为了让他们出现:

注释掉给出“No such module”错误的整个Test文件。 试着重新运行你的项目。

如果还有其他错误,现在就应该显示出来。修复它们,然后取消测试文件代码的注释。对我来说,“没有这样的模块”错误已经消失了。


如果这不能解决其他人的问题,你也可以尝试以下方法:

清理构建文件夹

打开“产品”菜单,按住“选项”,然后单击“清洁构建文件夹…”

确保启用可测试性设置为Yes

在项目导航器中单击项目名称。选择生成设置并向下滚动到生成选项。确保“启用可测试性”为“是”(用于调试)。

删除并重新添加测试目标

如果你已经做了其他的事情,我猜你可能不需要做这个。但是如果你这样做了,记得保存你已经写好的单元测试。

在project Navigator中单击项目名称。然后选择测试目标。点击底部的减号(-)按钮删除。

然后点击加号(+)按钮,选择iOS单元测试包再次添加它。正如您所看到的,您还可以以相同的方式添加一个UI Testing Bundle。

还有其他一些想法

确保所有必需的类都是测试目标的成员。 确保您已经添加了所有必需的库。 确保模块名称写得正确(参见这个答案)。

还是……

如果你发现了其他有用的方法,请在下方留言或回答。

相关的

如何在Xcode中进行单元测试 Xcode UI测试示例

这听起来是一个错误的构建设置的两个目标。 你需要确保:

对于两个目标,enable_teststability等于Yes。 测试目标的PRODUCT_MODULE_NAME值应该与应用程序的值不同。

在这个问题上花了几天时间后,我终于开始着手我的项目。问题出现在桥接标头-如果您在主目标中使用桥接标头,则测试目标中的路径不能为空

希望能为别人节省点时间。

环境:Xcode Version 9.0 (9A235) 场景:测试一个开源框架。 我也遇到了同样的问题:“没有这样的模块”。 解决方案: 选择Test目标。 选择构建阶段 添加要be的框架 通过链接二进制测试… 下面是测试文件: