Тестирование объекта qt с использованием фреймворка cxxtest и valgrind

Можно ли использовать cxxunit или любую другую платформу для модульного тестирования (кроме QtTestLib) для тестирования виджетов qt?

Если да, то есть еще два вопроса:

  1. Как?
  2. Поскольку я запускаю модульные тесты с использованием valgrind, может ли это сообщить об ошибках?

2 ответа

Решение

Да, это должно быть возможно. Я не уверен насчет cxxunit, но это теоретически возможно.

  1. Чтобы правильно протестировать объекты Qt, вам, вероятно, потребуется создать / уничтожить объект QApplication в ваших глобальных функциях установки и демонтажа. Если вы специально не тестируете функциональность QApplication, вы должны создавать только одну для всего запуска тестового приложения. Это позволит вам тестировать части логики виджета, но не так просто внешний вид или интерактивность интерфейса виджета. Кроме того, тестирование определенных элементов может зависеть от запуска цикла событий приложения, что будет более сложным.
  2. Valgrind может сообщить о некоторых ошибках. Он также может сообщать об ошибках с кодом Qt, в частности о статических распределениях, которые оставляются для восстановления приложения для восстановления.

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

Valgrind: есть плагин valgrind для Squish. Я сам этим не пользовался. Конечно, другие модульные тесты могут легко выполняться в valgrind, хотя я не знаю ни одного решения, которое бы полностью автоматизировало это. Нужно убедиться в том, что вы действительно подавляете все предупреждения извне, если у вас есть собственный код, чтобы какая-то ошибка в, например, библиотеках x11 не вызывала сбой модульного теста.

Другие вопросы по тегам