сравнивая QTest с другими фреймворками - PullRequest
5 голосов
/ 02 февраля 2011

Можете ли вы сравнить популярные платформы модульного тестирования для C ++ с QTest of Qt?

(cppunit, буст-тест, Google-тест и т. Д.)

Каковы преимущества недостатки? Спасибо.

примечание: тест GUI для нас не очень важен.

Ответы [ 3 ]

5 голосов
/ 03 февраля 2011

QTest - единственная известная мне среда для модульного тестирования компонентов пользовательского интерфейса. Мы использовали его с некоторым успехом, но придерживайтесь Boost.Test для нашего регулярного модульного тестирования.

3 голосов
/ 11 сентября 2017

Исходя из моего опыта, я не могу рекомендовать Qt test framework.Можно упомянуть два возможных преимущества:

  • QSignalSpy: для проверки испускаемых сигналов (полезно только для Qt), но это также может быть использовано с другой средой тестирования
  • easyдля записи параметризованных тестов

Основные недостатки:

  • Светильники не поддерживаются по умолчанию, вы должны обойти его в setUp tearDown
  • QCOMPARE не может сравниватьзначения с разным типом.Например, сравнение двух std::chrono::duration с различным соотношением невозможно, хотя они одинаково сопоставимы.Раздавать очень просто за QCOMPARE

Повышение простое и удобное в использовании, оно хорошо работает в большинстве случаев, без сюрпризов.

Основное преимущество тестовой среды Google - этонасмешливая поддержка.Но эту функцию можно использовать и для других платформ.Он имеет много замечательных функций, таких как определение ожидаемых последовательностей вызовов, пользовательских сопоставлений, утверждения могут быть удобочитаемыми.Но требуется время, чтобы ознакомиться с этими функциями (при условии, что они вам нужны).

Я хочу упомянуть еще одну среду: Catch.Это фреймворк только для заголовков, с очень немногими утверждениями.Например.REQUIRE(a == b) будет работать, а значения a и b будут разрешены при ошибке.Нет необходимости в классах приборов или шаблонах, вы можете просто определить секции в тестовом примере, это будет выполнено N раз, с разными секциями.Это очень просто, читабельно для человека.С другой стороны, для компиляции по умолчанию требуется время.

1 голос
/ 11 августа 2016

QtTest (до Qt 5.7) не дает возможности ожидать утверждения в UUT, в то время как Googletest действительно имеет концепцию смертельных тестов и может иметь тест, который проверяет для подтверждения. Мы находим это полезным в Googletest и досадно, что его нет в QtTest!

...