c - 模拟/伪造文件系统以测试 C 代码?

标签 c unit-testing cross-platform filesystems

我正在寻找一种跨平台的方法来测试我的应用程序中需要访问文件系统(以写入和读取二进制数据)的某些功能。在现实生活中,我的应用程序在 Linux 上运行,并将特殊数据存储在 /usr/local/etc 目录中。但应用程序的主要部分是跨平台库,应该在 Windows 和 Linux 上进行测试。此外,我不希望我的测试将数据直接写入/读取到 /usr/local/etc,因为那样会破坏测试隔离。

所以我正在考虑用文件系统的特殊模拟器代替对文件系统的实际访问。因此,每个需要访问文件系统的测试都可以创建可视文件系统对象的新实例,我可以单独运行测试,并适本地支持在 Windows 上进行测试。

我试图找到一些现有的开放/免费实现,但到目前为止还没有找到 C 代码。有什么提示吗?

更新:chroot 的纯 Linux 解决方案不适合我。

最佳答案

我将使文件系统位置可配置 - 使用命令行选项或使用环境变量(这两种方法都适用于 Linux 和 Windows)。

默认位置可以是 /usr/local/etc/,但为了测试(或在 Windows 上),您可以指定不同的位置。如果您正在运行多个命令,那么环境变量方法特别有效,因为您可以设置变量一次,然后只需按照使用默认存储位置时运行命令的方式运行命令。

对于这两种方法,值得考虑的是配置位置是否有任何安全隐患——通常不会有(可执行文件将只能做用户本来可以做的事情),但如果你正在运行可执行文件 setuid,您可能需要更多考虑。

关于c - 模拟/伪造文件系统以测试 C 代码?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3193996/

相关文章:

C - 当函数内部分配内存时,谁负责内存分配?

c - 从结构体访问数组并将其转换为指针

python - 使用 try- except-finally 和上下文管理器增加覆盖范围

windows - 没有虚拟机的 Windows 上的 Bash 4.2?

c - Makefile 和跨平台开发

c - 将一串输入存储到 C 中的结构中

c - 此 C 代码中的错误在哪里,如何消除警告?

c - 如何在 Eclipse 中建立经过单元测试的 C 项目

unit-testing - 包括新的测试目录 maven surefire 插件

wpf - 有没有像 WPF 一样支持数据绑定(bind)的跨平台 GUI 框架?