Xcode:运行 XC 单元测试时,模块名称“”不是有效标识符

Posted

技术标签:

【中文标题】Xcode:运行 XC 单元测试时,模块名称“”不是有效标识符【英文标题】:Xcode : module name "" is not a valid identifier while running XC unit test 【发布时间】:2017-07-24 20:49:07 【问题描述】:

尝试使用SDWebImage 设置我的 CocoaPods 运行 XCTest,我只能看到如下错误。有什么建议吗?

:0: 错误:模块名称“”不是有效的标识符 命令 /Applications/Xcode8.3.1.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/swiftc 失败,退出代码为 1

但一旦我编辑方案并取消选中构建中的测试,我就可以在模拟器上运行应用程序,但无法运行测试。

【问题讨论】:

您是否尝试过清理构建文件夹?在选项下 是否进行了干净的构建,如果测试目标缺少产品模块名称,它将无法工作 【参考方案1】:

始终确保您的所有测试目标都将PRODUCT_MODULE_NAME 设置为$(PRODUCT_NAME)

【讨论】:

我可以将 PRODUCT_MODULE_NAME 添加到测试目标吗?我得到 There are already PRODUCT_MODULE_NAME 所以我无法将其添加到测试目标。 并确保 PRODUCT_NAME 不包含破折号之类的字符。【参考方案2】:

在从 Xcode 11 迁移到 11.2 时,我可以按照以下步骤解决问题:

    选择目标 转到构建设置。 然后向下滚动到包装 产品模块名称 如果模块名称中有空格,请将其替换为下划线

【讨论】:

【参考方案3】:

在这种情况下,您需要$(PRODUCT_NAME:c99extidentifier)PRODUCT_MODULE_NAME

c99extidentifier 允许在PRODUCT_NAME 中使用破折号。

这也是可以在每个目标中继承的默认项目值。

【讨论】:

以上是关于Xcode:运行 XC 单元测试时,模块名称“”不是有效标识符的主要内容,如果未能解决你的问题,请参考以下文章

在 Xcode 单元测试中使用 @testable 时“没有这样的模块”

在 Xcode 中运行 iOS 单元测试时引用 _main 的链接器错误

如何修复 @testable 导入无法在 xcode 单元测试中加载模块

Xcode 6.1 直到运行时才检测单元测试

全新的 Xcode 单元测试目标无法运行,因为“启动会话在签入前已过期”。

Xcode单元测试:尝试将测试数据从单元测试写入项目文件夹时权限被拒绝