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