c++ - 在 Catch2 中指定外部文本文件路径的最佳方式

标签 c++ unit-testing

我正在为从文本文件中读取和解析数据的函数编写一些单元测试,这让我想知道:在 Catch2 单元测试框架中指定外部文本文件路径的最佳方法是什么?

我在 docs 中找不到它, 而且,即使它们是一些与此类似的问题(例如 here ),但没有一个专门与 Catch2 相关。

最佳答案

有一个存放相关文件的子目录怎么样?但是,如果您的构建树与源代码树是分开的,那么您需要让构建系统将它们复制到构建树中,或者以某种方式神奇地找出它们所在的路径。为了实现后者,我首先想到的是通过 brewing your own main 添加源代码树位置作为命令行参数。在 Catch 2 中,并在调用测试时使用您的构建系统来填充它。

避免将测试与外部文件耦合的一种方法是遵守 single responsibility principle并将函数拆分为两个模块:一个读取文件,然后将数据“馈送”到解析它的模块。

测试解析逻辑非常简单:您可以在单元测试源文件中只包含随机字符串,而无需管理外部文件。

在那种情况下,您还可以设计您的类/逻辑以允许您 stub /伪造/模拟处理文件系统的调用。

关于c++ - 在 Catch2 中指定外部文本文件路径的最佳方式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58979847/

相关文章:

c++ - 数字在数组中出现的次数

iphone - XCode 4 中的单元测试

c++ - 什么意思::在函数调用的前面

c++ - boost.serialization - 免费版本和基类实现

matlab - 将抽象常量属性分配给模拟

Java 8 流 IO - 测试

Python 单元测试在失败后继续

javascript - Ava 使用 Promise : promise returned by test never resolved 测试图像加载

c++ - 如何从 v8 脚本编译错误中获取行号和列?

c++ - 如何判断库是使用 C++11 编译的