【发布时间】:2019-11-21 16:47:55
【问题描述】:
我正在为从文本文件读取和解析数据的函数编写一些单元测试,这让我想知道:在 Catch2 单元测试框架中为外部文本文件指定路径的最佳方法是什么?
【问题讨论】:
标签: c++ unit-testing
我正在为从文本文件读取和解析数据的函数编写一些单元测试,这让我想知道:在 Catch2 单元测试框架中为外部文本文件指定路径的最佳方法是什么?
【问题讨论】:
标签: c++ unit-testing
有问题的文件所在的子目录怎么样?但是,如果您的构建树与源代码树是分开的,那么您需要让构建系统将它们复制到构建树中,或者以某种方式神奇地找出它们所在的路径。为了实现后者,我想到的第一件事是将源树位置添加为 Catch 2 中 brewing your own main 的命令行参数,并在调用测试时使用构建系统填充它。
避免将测试与外部文件耦合的一种方法是遵守single responsibility principle 并将函数拆分为两个模块:一个读取文件,然后将数据“提供”给解析它的模块.
测试解析逻辑很简单:您可以在单元测试源文件中包含随机字符串,无需管理外部文件。
在这种情况下,您还可以设计您的类/逻辑,以允许您存根/伪造/模拟处理文件系统的调用。
【讨论】: