Xcode – testing类文件是模块的一部分,忽略导入
所以我有一个iOS项目与testing,一切工作正常。
我觉得有必要改变项目名称。 我在苹果的文档中表示,select了项目并更名。
经过一段时间更新的东西,最后这个工作,应用程序运行正常,但我仍然有一个问题。
由于这个烦人的问题,我无法运行testing。 我相信这是一个基本的东西,但我仍然不能弄明白。
这是我的testing类(为了我使用Foo
示例的问题)
@testable import MyApp // File FooTests is part of module MyApp. Ignoring import. class FooTests: QuickSpec { override func spec() { describe("a foo test") { it("tests foo") { let return = Foo.barMethod() XCTAssertEqual(return, "expected", "Expected something, got \(return) instead") } } }
Foo
类没有被识别,我得到的错误是testing类是MyApp
一部分,事实并非如此。
我应该在哪里找?
我只是偶然发现了同样的问题,你的post很有帮助。 我发现的是,通过将Product Name
更改为AppNameTests
(按照您的示例),然后产品模块名称被正确反映,您不必在$(PRODUCT_NAME:c99extidentifier)
的末尾添加Tests
。 c99extidentifier
似乎是Product Name
。
概要:
- 在Project中select您的testing目标
- 导航到
Build Settings -> Packaging
- 将
Product Name
更改为以前的testing目标,可能会附加Tests
- 我相信根据苹果重命名一个项目重命名不包括更新模块在
@testable
,所以我不得不这样做手动
[UPTADE]这让Jean-Frederic弄清楚了他的答案。 这就是我接受它的原因。
我终于设法解决这个问题,但是我对解决scheme不满意。
考虑我的应用程序名称AppName
由于一些奇怪的原因,我无法解释,我的testing目标Build Settings -> Product Module Name
有$(PRODUCT_NAME:c99extidentifier)
值是Appname
,而不是AppNameTests
。 我检查了其他项目,价值是相同的,但转换为AppNameTests
所以在这种情况下,我不知道我能做些什么,使其自动更新,并在名称中包括testing部分。
我最终做的是将名称设置为$(PRODUCT_NAME:c99extidentifier)Tests
。 不知道这是否是一个适当的解决scheme,但现在它的工作。
如果有人有更好的解决scheme,请随时分享。
这是一个与Jean-Frederic Plante直接并行的解决scheme,虽然在我的情况下问题不是我的testing目标名称与我的主要目标相匹配,而是testing目标的模块被错误地设置为匹配模块名称主要应用程序目标 要纠正这些问题之一:
- 在您的项目中select您的testing目标。
- 导航到“ 生成设置” >“ 打包” 。
- 确保产品模块名称和产品名称都设置为
$(TARGET_NAME)
。