【发布时间】:2016-02-20 15:48:22
【问题描述】:
我正在为 Qt 中的一个函数编写单元测试。
我的代码
我有一个想要测试的函数:
QSqlDatabase createDB() {
QString database = "library";
QString dbPath = QStandardPaths::writableLocation(QStandardPaths::AppDataLocation);
QDir appDataDir(dbPath);
if (!appDataDir.exists()) {
appDataDir.mkpath(dbPath);
}
dbPath += "/" + database + ".sqlite";
QSqlDatabase db;
db.setDatabaseName(dbPath);
return db;
}
所以在我的测试中我有:
void DatabaseManagerTest::initTestCase()
{
QStandardPaths::setTestModeEnabled(true);
}
void DatabaseManagerTest::testDb()
{
QSqlDatabase m_db = createDb();
QString database = "library";
QString databasePath_exp = QStandardPaths::writableLocation(QStandardPaths::AppDataLocation)
+ "/" + database + ".sqlite";
QCOMPARE(m_db.databaseName(), databasePath_exp);
qDebug() << m_db.databaseName();
}
QTEST_MAIN( DatabaseManagerTest )
测试的输出是
1: FAIL! : DatabaseManagerTest::testDb() Compared values are not the same
1: Actual (m_db.databaseName()): "/home/olivier/.local/share/MyTest/library.sqlite"
1: Expected (databasePath_exp) : "/home/olivier/.qttest/share/MyTest/library.sqlite"
问题
createDb() 如何使用 Qt 的测试 StandardPaths 而不是真实的?
【问题讨论】:
标签: c++ qt unit-testing