Тестирование

QTemporaryDir в автотестах: изолируем файловые сценарии

Зачем тесту временный каталог

Тест, который пишет в постоянный каталог пользователя, зависит от состояния машины и может повредить реальные данные. QTemporaryDir создаёт отдельный временный каталог и удаляет его при уничтожении объекта, если включено автоудаление.

#include <QTemporaryDir>
#include <QFile>
#include <QTest>

void FileTest::writesReport()
{
    QTemporaryDir dir;
    QVERIFY(dir.isValid());
    QFile file(dir.filePath("report.txt"));
    QVERIFY(file.open(QIODevice::WriteOnly | QIODevice::Text));
    QCOMPARE(file.write("ready"), qint64(5));
    file.close();
    QVERIFY(QFile::exists(dir.filePath("report.txt")));
}

Проверяйте isValid(): создание каталога может завершиться неудачей из-за прав или нехватки места. Стройте путь через filePath(), а не склеивайте разделители вручную. Каталог существует, пока жив объект QTemporaryDir; не сохраняйте его путь для использования после завершения теста.

На Windows закройте открытые файлы до уничтожения временного каталога: занятый файл может помешать очистке. Если при ошибке теста нужно сохранить данные для диагностики, отключайте автоудаление только в таком сценарии и выводите путь в журнал.