首页 > 解决方案 > 如何为 swift 包中的所有测试调用全局设置?

问题描述

有了一个 swift 包,我想在开始测试之前做一些全局配置(基本上为所有测试配置日志记录)。令人惊讶的是,这在可以添加代码的 Linux 上很容易allTests

public func allTests() -> [XCTestCaseEntry] {
    Log.logger = HeliumLogger(.debug)
    return [
        testCase(MyTests.allTests),
        // ...
    ]

但我不知道如何在 macOS 上执行此操作。欢迎任何提示。

标签: swiftmacosxctestswift-package-manager

解决方案


您可以在测试运行之前调用 subclassXCTest和 override setUp,如下所示:

import XCTest
import LoggerAPI
import HeliumLogger

class LoggingTestCase: XCTestCase {

    override class func setUp() {
        Log.logger = HeliumLogger(.debug)
    }
}

然后,您可以让您的测试类继承自LoggingTestCase而不是XCTestCase.

这应该适用于 macOS 和 Linux。


推荐阅读