【发布时间】:2018-05-02 04:30:09
【问题描述】:
我正在使用带有单元测试的 Visual Studio。创建了一个测试项目,其目录位于我正在测试的项目中。
我正在尝试“单元测试”一个打开数据库文件并根据数据库内容创建类对象的函数。 该函数本身实际上运行良好。
bool import_materials_from_db(const char *db_name){
sqlite3 *db;
int rc = sqlite3_open_v2(db_name, &db, 2, NULL);
if (rc != SQLITE_OK) {
std::cout << "The database \"" << db_name << "\" was not found.\n";
return false;
}
}
我已经大大减少了这个功能,因为这是它失败的地方。 RC 表示错误代码 SQLITE_CANTOPEN (14)。 传递给函数的另一件事是持有我的班级的 std::vector 。不要认为这特别相关。
我这样调用函数:
import_materials_from_db("materials.db");
这在主应用程序中效果很好,但是一旦我在单元测试中尝试它:
import_materials_from_db("test_database.db");
我没有运气。
项目目录:
Advanced_Task_1\
单元测试目录:
Advanced_Task_1\UnitTest1\
为了以防万一,我已经尝试将数据库文件放在每个目录中。 我试过传递“..\test_database.db”等等等等。 最后,值得一提的是,我确信这是正确的文件名,并且我确信数据库中有信息可供读取。还是没有运气。
关于我到底做错了什么有什么想法吗?我尝试了“查看上面的目录”技巧,就像我在项目设置“..\”中所做的那样,但它也不喜欢那样。
【问题讨论】:
标签: c++ visual-studio unit-testing c++11 sqlite