m.y*_*m.y 7 unit-testing bundle nslocalizedstring ios xcode8
我在单元测试.pch文件中有以下内容,以允许我的单元测试找到正确的本地化文件包,这一点工作正常,直到我升级到Xcode8.
#undef NSLocalizedString
#define NSLocalizedString(key, comment) [[NSBundle bundleWithIdentifier:@"Tests-Unit"] localizedStringForKey:(key) value:@"" table:nil]
Run Code Online (Sandbox Code Playgroud)
现在,我得到了警告
Ambiguous expansion of macro NSLocalizedString
Run Code Online (Sandbox Code Playgroud)
这可以解释为什么我的单元测试失败,因为他们无法再找到本地化的字符串值.
任何想法有什么不对吗?我现在需要做些什么不同的事情吗?
编辑: 我觉得它与我的所有源文件在2个目标中有关,即一个用于项目,一个用于单元测试,这是我们设置它的方式.我正在尝试清理它并从单元测试目标中删除所有源文件并添加了
@testable import ProjectName
Run Code Online (Sandbox Code Playgroud)
而是单元测试文件,以便能够访问我的代码进行测试,但我现在正在
File 'MyFile.swift' is part of module 'ProjectName'; ignoring import.
Run Code Online (Sandbox Code Playgroud)
我最终让一切又恢复正常了。
\n\n让\xe2\x80\x99s 假设我们的项目名为Panda,它由 Obj-C 和 Swift 文件组成。所有这些文件都在我们的Panda和PandaTests目标中。
\n\n第 1 步:确保所有文件都具有正确的目标成员身份,即Panda目标:仅源文件、开发框架、图像等,PandaTests目标:仅测试文件、测试框架、模拟数据等
\n\n步骤 2:确保您的Panda项目将“构建设置”->“启用可测试性”设置为“是”。
\n\n步骤 3:确保您的PandaTests项目的“构建设置”->“产品模块名称”设置为 PandaTests。
\n\n第 4 步: \n按住“选项”按钮,然后单击“产品”,进行一次彻底的清理。您应该会看到“清理构建文件夹”选项。
\n\n第 5 步: \n对于 Swift 单元测试,添加@testable import Panda. 由于我们现在已经从PandaTests目标中删除了所有源代码文件,因此单元测试需要一种访问项目文件的方法。这使我们的 Swift 单元测试能够访问所有 Swift 文件以及Panda-Bridging-Header.h中包含的 Obj-C 文件。
| 归档时间: |
|
| 查看次数: |
3834 次 |
| 最近记录: |