swift-testing-revolutionary

GitHub Workflow Status (with event) Swift 6.0 Xcode 16.0 SwiftPM Platforms License

swift-testing-revolutionary 将用 XCTest 编写的测试用例转换为 swift-testing 格式。

用法

本工具提供三种使用方式:作为 Xcode 插件,作为命令插件,或作为命令行工具。

我们提供三种使用本工具的方式。

安装方式 适用于 便捷性 自定义性
Xcode 插件 Xcode 项目
包命令插件 Swift 包
命令行工具 任何项目

注意

默认情况下,除非您传递了 --dry-run 标志,否则所有测试文件都将被覆盖。请确保在运行此工具之前备份您的测试文件。

Xcode 插件

对于 Xcode 项目,最好用作 Xcode 插件。

1. 将包添加到您的 Xcode 项目

2. 右键点击您的项目根目录,然后选择 RevolutionaryPlugin

3. 选择您要转换的测试目标。

4. 如果需要,允许更改访问权限。

包命令插件

对于 Swift 包,最好用作包插件。

1. 将包插件添加到您的包

let package = Package(
    name: "MyPackage",
    dependencies: [
        .package(url: "https://github.com/giginet/swift-testing-revolutionary", from: "0.1.0"),
    ]
)

2. 在您的包上运行该插件

您可以传递您要转换的目录或文件。

$ swift package plugin --allow-writing-to-package-directory swift-testing-revolutionary Tests/ MyTests1.swift MyTests2.swift

命令行工具

安装此工具并从命令行运行它。

$ swift-testing-revolutionary path/to/Tests

使用 Mint

$ mint install giginet/swift-testing-revolutionary 

使用 experimental-install

$ git clone https://github.com/giginet/swift-testing-revolutionary
$ cd swift-testing-revolutionary
$ swift package experimental-install

使用 Artifact Bundle

Releases 下载 swift-testing-revolutionary.artifactbundle.zip 并解压它。

提示

您可以轻松地将 artifactbundles 与 mtj0928/nest 一起使用。

选项

您可以将一些选项传递给命令。

选项 描述 默认值
--dry-run 以 dry run 模式运行。 所有测试文件都不会被覆盖
--enable/disable-struct-conversion 是否将测试类转换为结构体 启用
--enable/disable-strip-test-prefix 是否从每个测试方法中删除 test 前缀 启用
--enable/disable-adding-suite 是否将 @Suite 注解添加到每个测试类 启用
--enable/disable-attributes-on-same-line 属性是与声明放在同一行,还是放在声明之上 启用

结构体转换

默认情况下,所有测试类都将转换为结构体。

// Before
final class MyModelTests: XCTestCase { }

// After
@Suite struct MyModelTests { } // Enabled (Default)
@Suite final class MyModelTests { } // Disabled

注意

如果测试用例包含 tearDown 方法,此工具总是将其转换为反初始化器。但是,deinit 不能在结构体中定义,因此对于这种情况,应该传递此选项。

删除 Test 前缀

默认情况下,所有测试方法都会删除 test 前缀。

// Before
func testProperty() { }

// After
@Test func property() { } // Enabled (Default)
@Test func testProperty() { } // Disabled

添加 @Suite

默认情况下,所有测试类都会使用 @Suite 进行注解。

// Before
final class MyModelTests: XCTestCase { }

// After
@Suite struct MyModelTests { } // Enabled (Default)
struct MyModelTests { } // Disabled

如何迁移 swift-testing 的测试

请参阅 swift-testing 文档中的这篇文章。

从 XCTest 迁移测试 | Apple Developer Documentation

支持的转换

目前,此工具支持上述文档中提到的以下转换。

不支持的功能必须手动转换。

许可

MIT 许可证