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

我试着

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

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


当前回答

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

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

其他回答

我更改了项目的名称,因为我不希望应用程序的原始名称显示在应用程序商店中。这就需要对我的应用主机进行更改,这就需要对我所做的导入进行更改。

旧名:QRCodeTarot

新名字:尖帽塔罗牌

这是我在版本控制客户机中对主机所做的更改。

这意味着在我的测试中,我需要将导入的名称更改为应用程序的显示名称。因此,即使我的项目名为QRCodeTarot,我也需要将导入更改为显示名称。

我从导入qrcoderreader到导入Pointy_Hat_Tarot。

让项目名称与测试导入名称匹配的建议是错误的。

导入名称应与项目的显示名称匹配,而不是项目名称

就我而言,我有三个问题。 首先,我必须指定导入路径:

Target -> Build Settings -> Swift Compiler - Search Paths -> Import Paths

第二个是我正在使用Pods,我必须将这些Pods导入到我的测试中,使用:

target 'MyAppTests' do
    inherit! :complete
end

第三个是因为我在我的目标中使用了一个桥接头,因此我必须指定桥接头与测试相同。

这是我在Xcode 13.1中使用的方法:

在Xcode Preferences > Locations的Locations选项卡中,我定义了一个自定义位置:

这不仅导致单元测试失败,出现可怕的“没有这样的模块”错误,而且还导致“命令CodeSign失败,退出码非零”和其他警告和错误。

将设置更改为唯一:

解决了所有问题。

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

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

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