Модульный тест Qt повторяет все дважды в панели вывода приложения Qt Creator для Qt 4.8 (но не в Qt 5.2.2)

Я только что заметил, что даже в свежем новом проекте Qt Unit Test дважды пишет все в области вывода приложения разными цветами — сначала пурпурным, а затем черным. Я предполагаю, что это потому, что он пишет как в stdout, так и в stderr.

Это происходит в Qt 4.8, но не в Qt 5.2.2. В Qt 5.2.2 печатается только черный текст, как и должно быть.

Например, для проекта модульного тестирования, содержащего только этот тест:

void Untitled15Test::testCase1()
{
    QVERIFY2(false, "Failure");
}

Результат такой (я использую скриншот, чтобы показать цвета):

введите здесь описание изображения

Есть ли способ отключить это поведение? Это ошибка в Qt4?


person sashoalm    schedule 18.03.2015    source источник


Ответы (1)


После некоторого поиска на сайте Qt Bug Tracker я обнаружил, что это действительно ошибка. Я нашел отчет об ошибке с упоминанием:

Описание Если отключить опцию «запустить на терминале» в Windows, вывод qDebug будет напечатан дважды в области вывода приложения. Это связано с тем, что qDebug использует OutputDebugString и stderr для вывода своих сообщений. Чтобы решить эту проблему, мы могли бы сделать одно из следующих действий: Отобразить поток OutputDebugString и stderr в разных панелях, если «запуск на терминале» отключен. Установите флажок, чтобы скрыть поток OutputDebugString в области вывода приложения. Запретите QDebug использовать OutputDebugString и stderr. Возможно, используя переменную среды, установленную Qt Creator.

Я думаю, что это происходит потому, что QTestLib использует CONFIG += console , в то же время отключая флажок «Выполнить в терминале», вызывая эту ошибку.

person sashoalm    schedule 18.03.2015