swift-testing-revolutionary 将用 XCTest 编写的测试用例转换为 swift-testing 格式。
本工具提供三种使用方式:作为 Xcode 插件,作为命令插件,或作为命令行工具。
我们提供三种使用本工具的方式。
安装方式 | 适用于 | 便捷性 | 自定义性 |
---|---|---|---|
Xcode 插件 | Xcode 项目 | ✅ | ❌ |
包命令插件 | Swift 包 | ✅ | ✅ |
命令行工具 | 任何项目 | ❌ | ✅ |
注意
默认情况下,除非您传递了 --dry-run
标志,否则所有测试文件都将被覆盖。请确保在运行此工具之前备份您的测试文件。
对于 Xcode 项目,最好用作 Xcode 插件。
对于 Swift 包,最好用作包插件。
let package = Package(
name: "MyPackage",
dependencies: [
.package(url: "https://github.com/giginet/swift-testing-revolutionary", from: "0.1.0"),
]
)
您可以传递您要转换的目录或文件。
$ swift package plugin --allow-writing-to-package-directory swift-testing-revolutionary Tests/ MyTests1.swift MyTests2.swift
安装此工具并从命令行运行它。
$ swift-testing-revolutionary path/to/Tests
$ mint install giginet/swift-testing-revolutionary
$ git clone https://github.com/giginet/swift-testing-revolutionary
$ cd swift-testing-revolutionary
$ swift package experimental-install
从 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
前缀。
// Before
func testProperty() { }
// After
@Test func property() { } // Enabled (Default)
@Test func testProperty() { } // Disabled
默认情况下,所有测试类都会使用 @Suite
进行注解。
// Before
final class MyModelTests: XCTestCase { }
// After
@Suite struct MyModelTests { } // Enabled (Default)
struct MyModelTests { } // Disabled
请参阅 swift-testing 文档中的这篇文章。
从 XCTest 迁移测试 | Apple Developer Documentation
目前,此工具支持上述文档中提到的以下转换。
import XCTest
)final class XXXTests: XCTestCase
)setUp
, tearDown
)func testXXX()
XCTAssert~
)XCTUnwrap
)XCTFail
)continueAfterFailure
)XCTExpectation
)XCTSkipIf
, XCTSkipUnless
)XCTExpectFailure
)不支持的功能必须手动转换。
MIT 许可证