如何使用 XCTests 测试打印语句?

How do I use XCTests to test for print statements?

我正在尝试测试一个函数是否打印出一些东西。我如何使用 XCTests 做到这一点?如果这是可能的,是否有事实理由去做和不做?

谢谢!

我不知道有什么方法可以测试 print 语句,但我认为这无关紧要。 print 语句的输出与您的应用实际执行的操作无关。您应该测试您的应用更改了哪些数据、向用户显示了什么等。

@Mike Taverne 是对的。如果你真的想针对 print 语句进行实际测试,你可以像这样扩展 print 函数:

var printWasWrittenTo: Bool = false

public func print(_ items: Any..., separator: String = " ", terminator: String = "\n") {
    var output: String = items.map { "\([=10=])" }.joined(separator: separator)

    printWasWrittenTo = true //test against this variable being changed

    Swift.print(output, terminator: terminator)
}