Как собрать все результаты модульных тестов QtTestLib в один файл при использовании одного тестового проекта?

В нашем проекте мы используем QtTestLib для модульного тестирования. Причина в том, что весь проект уже использует Qt везде, где это возможно, и это приложение с графическим интерфейсом, поэтому мы хотели иметь возможность тестировать интерфейсы с графическим интерфейсом.

Наш проект компилируется MSVC, поэтому мы не хотели иметь отдельный файл проекта для каждого теста, потому что это загромождает решение. Таким образом, мы создали единый проект для всех тестов. Все тестирование должно быть автоматизировано на CIS (непрерывная интеграция), поэтому мы попытались подключить наши тесты к Hudson через выходной файл в формате XML с использованием некоторых XSLT-преобразований.

Но, похоже, есть проблема с выводом тестов. Если вы используете один main() для всех тестов и просто передаете аргументы строки cmd каждому тесту:

#include "MyFirstTest.h"
#include "MySecondTest.h"

int main(int argc, char **argv)
{
  int result = 0;
  MyFirstTest test1;
  result |= QTest::qExec(&test1, argc, argv);
  MySecondTest test2;
  result |= QTest::qExec(&test2, argc, argv);
  return result;
}

, вы получите файл результатов, перезаписанный несколько раз. Поэтому, если вы хотите несколько автоматизировать его, используя выходной файл (например, xml), вы получите в нем только последний результат. Все остальные будут перезаписаны.

Мы уже пробовали этот подход, он не дает вам возможности использовать некоторые системы непрерывной интеграции, такие как Hudson.Итак, мой вопрос: есть ли возможность добавлять результаты в один выходной файл? Конечно, мы можем использовать некоторые обходные пути, такие как запуск каждого теста с помощью QTest::qExec() с измененными параметрами для записи результатов в отдельные файлы, но это не лучший способ. В идеале я хочу иметь один файл результатов, чтобы использовать его с CIS.

6
задан sorush-r 25 January 2014 в 19:03
поделиться