Опции командной строки Qt Test

Я очень новичок в Qt, и я нахожусь в процессе проверки структуры модульного тестирования Qt Test. Я использую Qt 5.5.
Я могу создавать тестовые случаи с использованием макросов Qt и запускать их из Qt Creator, но у меня возникают проблемы при запуске из командной строки. В частности, я не могу использовать параметры ведения журнала, предоставляемые Qt Test.

Вот что я делаю:

  1. Создал проект Qt Test с использованием Qt Creator
  2. Построил проект с использованием Qt Creator
  3. Исполняемый файл создается в папке «project_directory / debug»
  4. Откройте командную строку из папки отладки
  5. Запустите следующие команды:

QtTestValidation5.exe –xml
QtTestValidation5.exe -o results.txt, txt

  1. Все тесты выполнены, но в папке ничего не сохранено

Я хотел бы записать результаты теста в форматах xml, csv и текстовых файлов. Может ли кто-нибудь помочь, пожалуйста?

3

Решение

Первый вариант должен выводить результаты теста на стандартный вывод в формате XML. Я только что проверил это с моей собственной библиотекой, и это работает. Хотя он выводит несколько связанных XML-документов, но это, вероятно, потому, что я использую нестандартные main() который выполняет несколько тестов вручную, поэтому, очевидно, для каждого из них создается один XML-документ.

Второй, вероятно, ошибочный: он должен быть -o results.txt,txt (нет места). Работает как я так же хорошо, но только пишет последний тест. Опять же, это, вероятно, потому что я выполняю несколько тестов вручную, поэтому каждый из них перезаписывает предыдущий, и я вижу только последний. Если я хочу сохранить все тесты, мне нужно указать формат с помощью -xml или же -txt и затем перенаправить его на стандартный вывод:

qztest.exe -xml > results.xml

Это работает, но я все еще получаю несколько связанных документов в одном файле.

-csv опция не работает, но опять же Qt docs сказать

Этот режим подходит только для тестов, так как он подавляет нормальный
пропустить / пропустить сообщения.

И у меня нет ориентиров.

Что касается того, почему аргументы работают на меня, вот мой main():

int main(int argc, char **argv)
{
QCoreApplication app(argc, argv);
int err = 0;
{
TestQuaZip testQuaZip;
err = qMax(err, QTest::qExec(&testQuaZip, app.arguments()));
}
{
TestQuaZipFile testQuaZipFile;
err = qMax(err, QTest::qExec(&testQuaZipFile, app.arguments()));
}
// And so on, and so on...
if (err == 0) {
qDebug("All tests executed successfully");
} else {
qWarning("There were errors in some of the tests above.");
}
return err;
}

Смотри, я создаю QCoreApplication— это может быть очень важно, а затем я вручную передаю аргументы QText::qExec, Поскольку вы создали свой проект с помощью Qt Creator, вы можете посмотреть на main(), Возможно, Qt Creator не инициализировал что-то правильно. Помните, чтобы аргументы работали, код тестирования должен каким-то образом иметь доступ к этим аргументам! Таким образом, вы должны либо передать их явно, либо, по крайней мере, инициализировать приложение, чтобы код мог сделать что-то вроде QCoreApplication::instance()->arguments() внутренне.

3

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]