swift - 如何为 swift 包中的所有测试调用全局设置?

标签 swift macos xctest swift-package-manager

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

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

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

最佳答案

您可以子类化 XCTest 并覆盖 setUp,它在测试运行之前被调用,如下所示:

import XCTest
import LoggerAPI
import HeliumLogger

class LoggingTestCase: XCTestCase {

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

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

这应该适用于 macOS 和 Linux。

关于swift - 如何为 swift 包中的所有测试调用全局设置?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50188031/

相关文章:

macos - 如何将数据从 NSWindowController 传递到它的 NSViewController?

json - NSURLSession.dataTaskWithRequest 不工作

ios - strip 错误 : 'createTokenWithCard(_:completion:)' is unavailable

java - 仍然无法访问本地主机 :5762 after starting RabbitMQ server

objective-c - 使用 GL3_Text 示例方法在 Mac OSX 上的 OpenGL 中绘制文本

ios - 日志记录和断点在 XCTests 中不起作用

objective-c - OCMockObserver : unexpected notification observed

ios - XCTests 在物理设备上失败 : "Canceling tests due to timeout ..."

string - 快速初始化资源

node.js - 无法在 Mac 上安装 angular-cli