无法使用新的swift测试框架(8年前的项目)

问题描述 投票:0回答:1

我正在尝试使用新的 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) 上构建它。任何人都可以为我指出正确的方向吗?由于这个框架相当新,因此没有太多可用的帮助。

swift unit-testing testing frameworks
1个回答
0
投票

这两条错误信息

“__TestContainer”不是类“MyApp.Testing”的成员类型

“Test”不是类“MyApp.Testing”的成员类型

表明模块

Testing
中有一个名为
MyApp
的类。

@Test
宏生成显示
Testing.__TestContainer
Testing.Test
的代码。通常,
Testing
指的是 Swift 测试 module,它声明了称为
__TestContainer
Test
和许多其他类型的类型。

但是,由于

MyApp
也有
Testing
类,所以
Testing
中的
Testing.__TestContainer
指的是 你的类

因此您应该将

Testing
类重命名为其他名称来解决此名称冲突。

© www.soinside.com 2019 - 2024. All rights reserved.