К основному контенту

Запуск С++ unit-тестов в Visual Studio 2012

Особенности Visual Studio 2012 C++ unit-test framework'а
Собственно описание. Ничего особенного (если не считать самого факта наличия в VS2012 библиотеки для тестирования native С++). Работает достаточно шустро.

Недостатки в сравнении с Google C++ Testing Framework:
1. Нет Expect_Fail, что означает следующее. Если результат не соответствует ожиданию тест сразу останавливает работу, не проверяя другие условия если они есть. Подробнее о разнице assert vs expect можно посмотреть здесь.
2. Исключения только "ожидаемые" и без учета типов.
3. Во время запуска тестов результаты никуда не пишутся (в файл). Минорно, но факт.
4. Возможности по расширению в GTF намного больше. Опять же для mock по-любому придется использовать Google C++ Mocking Framework.
5. Если используете тестовое логирование, то результаты ищете в специальном окне Output "Tests":



Для автоматизации использовать VSTest.Console.exe.
Можно группировать тесты. Подробности здесь.

Для понятного отображения результатов Google C++ Testing Framework можно использовать Google Test Adapter. Beta, результаты смотреть стало удобней. Но пока не работает "скачок" из результата теста в код. Исходников расширения автор не показывает, будем надеяться, что он сам разберется и починит проблему.
Для счастливчиков использующих Visual Studio 2012 или 2013 можно использовать GoogleTest Runner. Он стабильней и работает переход от тестов к коду.

Корявости общего юзабилити Test Explorer'a (навеяно общением с @Advard, он на большинство вещей и наткнулся)
1. Нет возможности частичного копирования рез-тов теста(ов). Только Copy All по правому клику или Ctrl+C в окне с результатом теста. И даже этот костылек прикрутили в последнюю очередь (пруф)
2. Test Explorer не открывается сам (например будучи свернутым), если при автоматическом запуске тестов после сборки были ошибки в тестах. Странно и неудобно.
3. Нельзя посмотреть всю картинку: только список тестов. Summary содержит только общие рез-ты. Хотя... может это и правильно: все равно будешь разбираться последовательно. Но общей картины "катастрофы" лично мне не хватает.
4. Наблюдаются проблемы с фичей "автозапуск тестов после билда". Неоднократно воспроизводилась проблема, когда после билда тесты "запускаются" по старому коду или скорее всего совсем не запускаются, а показываются старые результаты. Странно, но факт. Воспроизводится и на C++, и на C#. В итоге после "автозапуска" тесты зеленые, а при ручном повторном запуске уже красные. Стремно. Поэтому запуск Google тестов "рулит".

У меня есть еще небольшой пост про то, как начать тестировать C++.

Комментарии

Популярные сообщения из этого блога

Mock vs Stub

Когда мы начали изучать модульное тестирование, то одними из первых терминов, с которыми пришлось познакомиться, стали Mock и Stub.

Ниже попробуем порассуждать в чем их сходство и различие, как и для чего они применяются.

Проверять работоспособность тестируемого объекта (system uder test - SUT) можно двумя способами: оценивая состояние объекта или его поведение.

В первом случае проверка правильности работы метода SUT заключается в оценке состояния самого SUT, а также взаимодействующих объектов, после вызова этого метода.

Во-втором, мы проверяем набор и порядок действий (вызовов методов взаимодействующих объектов, других методов SUT), которое должен совершить метод SUT.

Собственно, если коротко, то в одном случае используется Stub, а в другом Mock. Это объекты, которые создаются и используются взамен реальных объектов, с которым взаимодействует SUT в процессе своей работы.

Теперь подробнее.

Gerard Meszaros использует термин Test Double (дублер), как обозначение для объекта, который зам…

План "Б" или как прикольно провести субботний день

Всем привет.
Вчера состоялась конференция "План Б". Организаторами выступили ребята из Яндекса, за что им большое спасибо. Судя по приблизительным подсчетам в мероприятии участвовало около 200 человек.

Основной темой конференции было планирование, планирование всего: проектов, разработки, тестирования, дизайнеров и даже организации музыкального фестиваля.
Сначала думал написать отчет в обычном своем стиле: кто и что говорил, но почитав твиттер по #pbconf понял, что просто потеряю время :) Поэтому кому оооочень интересно узнать подробности следуйте за птичкой и вы все узнаете (тэг #pbconf попал в top-30 твиттера)
Здесь приведу лишь те вещи, которые мне запали в мозг
Роман Чернин о продуктовой разработке: "нет заказчика, нет требований, нет сроков -> как принимать решения? ответ: заводим себе Product Manager-а"
Оля Павлова (@op): "бойтесь иллюзии точной формулировки" "заказчик - ребенок, выдаем ему игрушку как можно чаще" "не забываем, …

Полезные ресурсы для молодых (и не только) тестировщиков

Уже 3 месяца провожу собеседования тестировщиков.
Поначалу они просто  веселили - после 15-летнего опыта собеседования С++-разработчиков, общение с тестировщиками (чаще были "-цы") было чем то экзотическим и забавным.

Потом становилось все грустнее и грустнее, мимими закончилось. Началась печаль.