我的单元测试 .pch 文件中有以下内容,允许我的单元测试为本地化文件找到正确的包,并且在我升级到 Xcode8 之前这一切都工作正常。
#undef NSLocalizedString
#define NSLocalizedString(key, comment) [[NSBundle bundleWithIdentifier:@"Tests-Unit"] localizedStringForKey:(key) value:@"" table:nil]
现在,我收到警告
Ambiguous expansion of macro NSLocalizedString
这可以解释为什么我的单元测试失败,因为它们再也找不到本地化的字符串值。
有什么想法有什么问题吗?我现在需要做一些不同的事情吗?
EDIT:我有一种感觉,这与我所有的源文件有关2 个目标即一个用于项目,一个用于单元测试,这是我们设置的方式。我正在尝试清理它并从单元测试目标中删除所有源文件并添加
@testable import ProjectName
而不是单元测试文件,以便能够访问我的代码进行测试,但我现在得到了
File 'MyFile.swift' is part of module 'ProjectName'; ignoring import.
我最终让一切又恢复正常了。
假设我们的项目名为Panda它由 Obj-C 和 Swift 文件组成。所有这些文件都在我们的Panda and 熊猫测试 target.
STEP 1:确保您的所有文件都具有正确的目标成员资格,即Pandatarget:只有源文件、开发框架、图像等熊猫测试target:只有测试文件、测试框架、模拟数据等
STEP 2:确保您的Panda项目有构建设置 -> 启用可测试性设置为是.
STEP 3:确保您的熊猫测试项目有构建设置 -> 产品模块名称设置为 PandaTests.
STEP 4:按住“选项”按钮,然后单击“产品”即可进行良好的清理。你应该看到一个清理构建文件夹 option.
STEP 5:对于 Swift 单元测试,添加@testable import Panda
。由于我们现在已经从熊猫测试目标,单元测试需要一种访问我们的项目文件的方法。这使得我们的 Swift 单元测试能够访问我们的所有 Swift 文件以及那些已包含在我们的文件中的 Obj-C 文件。熊猫桥接标头.h.
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)