QTest
рекомендует организовывать модульные тесты в виде отдельных исполняемых файлов. Для этого есть специальный макрос, который генерирует основную функцию: QTEST_MAIN
.
Я нашел этот подход не очень чистым, гораздо полезнее запускать все тесты сразу. Итак, я искал, есть ли возможность сделать это, и я нашел несколько человек, предлагающих одно и то же решение:
Qt: запуск модуля тесты из нескольких тестовых классов и суммировать результаты всех из них
http://www.davideling.it/2014/01/qtest-multiple-unit-test-classes/
https://alexhuszagh.github.io/2016/using-qttest-efficiently/< /а>
Решение состояло в том, чтобы отказаться от использования макроса QTEST_MAIN
и написать свою собственную функцию main
, в которой вы выполняете тесты, которые хотите выполнить:
int main(int argc, char *argv[])
{
int status = 0;
{
TestA ta;
status |= QTest::qExec(&ta, argc, argv);
}
{
TestB tb;
status |= QTest::qExec(&tb, argc, argv);
}
return status;
}
Я нашел, что это отличная идея, однако, есть проблема. В документации Qt для qExec
есть часть, которая звучит так:
Для автономных тестовых приложений эту функцию не следует вызывать более одного раза, так как параметры командной строки для регистрации выходных данных теста в файлы и выполнения отдельных тестовых функций не будут работать правильно.
Решение, предложенное этими людьми, предполагает именно это: выполнение qExec
более одного раза. Может ли кто-нибудь объяснить мне, что именно означает command-line options for logging test output to files and executing individual test functions will not behave correctly
?
Что именно может пойти не так при таком подходе?