2012-05-27 1 views
3

Я использую QTestLib Library и QTest для выполнения моих модульных тестов. Я работаю над Windows 7 и используя Qt 4.8 с компилятором MVSC 2010. Когда я запускаю мой тест с помощью:Как получить информацию от QTestLib/QTest на непрохождения теста

QTest::qExec(TestDateDD/whateverTestClass); 

я получить выход в консоли:

********* Start testing of TestDateDD ********* 
    Config: Using QTest library 4.8.0, Qt 4.8.0 
    PASS : TestDateDD::initTestCase() 
    PASS : TestDateDD::testValidity() 
    FAIL! : TestDateDD::testMonth(2012/7/10) Compared values are not the same 
    Actual (date.longMonthName(date.month())): July 
    Expected (monthname): June 
    ..\UnitTestingPlugiin\TestDateDD.cpp(38) : failure location 
    PASS : TestDateDD::cleanupTestCase() 
    Totals: 3 passed, 1 failed, 0 skipped 
    ********* Finished testing of TestDateDD ********* 

Однако мое требование, чтобы отобразить это сообщение в моем GUI для каждого тестового слота. Я провел некоторое исследование и обнаружил, что qtestlog.cpp использует свой собственный messageHandler, который управляет тестовым outuput и отображает результат как PASS или FAIL с сообщением об ошибке, номером строки и т. Д. Есть ли способ, которым я могу справиться с этим сообщениемHandler QTest для моего графического интерфейса Заявка?

ответ

4

Там нет никакого способа изменения функциональности логгер. QAbstractTestLogger жестко запрограммирован для вывода в файл или stdout, и вы не можете предоставить свою собственную реализацию QTestLog.

Вы можете перенаправить stdout в текстовое поле, или вы можете указать -o filename в качестве аргумента при вызове QTest::qExec и прочитать файл по мере его выписки.

Однако, я бы вместо этого рекомендуется компилировать тесты на отдельные исполняемые файлы и запускать их с помощью QProcess. Он наследует QIODevice, и его не должно быть сложно отправить свои данные в ваше окно.

Пара других преимуществ использования QProcess заключается в том, что сбой или подтверждение в модульном тесте не приведет к снижению вашего графического интерфейса и что вы сможете одновременно запускать несколько тестов, не запутывая ваш вывод.

+0

Спасибо за предложения, я теперь в состоянии писать свои результаты тестирования в файл XML, а затем чтение из этого. – SAM

Смежные вопросы