我有一种将数据保存到二进制文件中的方法。我正在尝试对这个方法进行单元测试。这就是为什么我为自己制作了一个控制器二进制文件,其中包含我应该使用我的方法保存的数据。
我的文件夹树如下所示:
C:.
├───include
└─── header.h
├───source
│ └─── source.cpp
└───tests
└───Test
├───data
│ └── controller.bin
└─── unitary_test.cpp
在unitary_test.cpp 中运行测试时,我想将controller.bin 复制到我创建的临时文件夹,即我使用测试下的方法创建文件的文件夹。
问题是我无法使用相对路径复制此文件,因为找不到我的文件。
QTemporaryDir dir;
std::string controllerPath = "controller.bin";
QFile::copy(QString::fromStdString("./data/" + controllerPath), QDir(dir.path()).filePath(QString::fromStdString(controllerPath)));
有没有办法可以在运行时使用相对路径来做到这一点?
相对路径必须相对于运行时当前目录。可能您从另一个不存在相对路径 data/controller.bin 的当前目录执行 unitary_test 。
“unitary_test.exe”位于哪里?据我所知,Qt Creator 将构建结果生成到单独的目录中(而不是源目录中)
找到unitary_test.exe并将“data”目录复制到其目录中。通常,它应该在您的构建脚本中完成(例如 CMakeLists.txt)