我正在尝试使用新的 Swift 测试框架创建一些单元测试。我使用 Xcode 模板文件生成器创建了一个空测试。
import Testing
//@testable import MyApp
struct Test {
@Test func EmptyTest() async throws {
// Write your test here and use APIs like `#expect(...)` to check expected conditions.
}
}
如果我将导入我的项目(MyApp)的行注释掉。测试成功运行并完成。如果我只是取消注释这一行,以便它导入我的项目(并且我实际上可以编写一些东西来测试我的代码),它会拒绝构建。以下是生成的错误的示例:
类型“Testing”没有成员“__requiringTry”
类型“Testing”没有成员“__requiringAwait”
“__TestContainer”不是类“MyApp.Testing”的成员类型
“Test”不是类“MyApp.Testing”的成员类型
如果这有什么不同的话,这个项目的起源可以追溯到 2016 年。但是,我现在正在针对 iOS 18 的最新 Xcode(16) 上构建它。任何人都可以为我指出正确的方向吗?由于这个框架相当新,因此没有太多可用的帮助。
这两条错误信息
“__TestContainer”不是类“MyApp.Testing”的成员类型
“Test”不是类“MyApp.Testing”的成员类型
表明模块
Testing
中有一个名为MyApp
的类。
@Test
宏生成显示Testing.__TestContainer
和Testing.Test
的代码。通常,Testing
指的是 Swift 测试 module,它声明了称为 __TestContainer
、Test
和许多其他类型的类型。
但是,由于
MyApp
也有 Testing
类,所以 Testing
中的 Testing.__TestContainer
指的是 你的类。
因此您应该将
Testing
类重命名为其他名称来解决此名称冲突。