【发布时间】:2019-11-13 15:53:52
【问题描述】:
如果使用给定参数--static 调用命令行应用程序,我正在编写一些实用程序代码以将统计信息打印到标准输出。现在我只是使用print 和字符串插值(这很棒!)。
看来这也是我应该放入单元测试的内容。
在测试代码中是否有一种简单的方法,将输出重定向到一个字符串,或者以其他方式捕获它以便我可以XCTAssertEqual 反对它?
【问题讨论】:
标签: swift unit-testing xctest
如果使用给定参数--static 调用命令行应用程序,我正在编写一些实用程序代码以将统计信息打印到标准输出。现在我只是使用print 和字符串插值(这很棒!)。
看来这也是我应该放入单元测试的内容。
在测试代码中是否有一种简单的方法,将输出重定向到一个字符串,或者以其他方式捕获它以便我可以XCTAssertEqual 反对它?
【问题讨论】:
标签: swift unit-testing xctest
重定向输出不是你在单元测试中做的方式。相反,您有一些替代选择:
你可以有一个像generateStatistics 这样的辅助函数,它产生一个字符串,然后打印出来。在单元测试中,您不会测试打印部分。相反,您只测试函数generateStatistics 是否提供了正确的结果字符串。然后您可以在集成测试中测试打印部分。
您可以模拟 print 函数,也就是说,将其替换为一个函数,而不是打印字符串,而是收集它们并允许您的测试代码分析它们。我不熟悉 swift,所以我不能告诉你是否可以轻松地直接模拟 print - 如果不能,你可以用其他一些你可以模拟的函数来包装它。
附带说明:您提到您的选项是--static,但我认为您的意思是--statistic,对吧?
【讨论】: