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

Запуск С++ 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): "бойтесь иллюзии точной формулировки" "заказчик - ребенок, выдаем ему игрушку как можно ча

Переключите тумблер или умные люди дурного не посоветуют

Навеяно интересными вопросами про TDD после  вчерашнего выступления . Uncle Bob : " Flipping the Bit " Подробнее постараюсь перевести чуть позже, пока только это: Как определить, что у коллеги (или у вас) ТУМБЛЕР переключен?  Если ваши ответы на вопросы ниже совпадают с приведенными - то все хорошо :) Мантра: Сможете ли вы выполнить работу быстрее используя TDD? ДА Существуют ли какие-либо задачи, которые вы можете выполнить быстрее без TDD? НЕТ Я понимаю, что TDD может помочь в долгом проекте, а что если у вас короткая задача? Будете использовать TDD? Да, потому что TDD быстрее даже в короткой перспективе Что если времени реально не хватает, и босс стоит над душой, будете ли вы использовать TDD? ДА В любом случае? ДА Есть ли случаи, когда вам не нужно использовать TDD? НЕТ Представьте себе что вы на звездном корабле Enterprise ( Star track ) и осталась всего секунда до взрыва антиматерии. Все что вам нужно, чтобы избежать этого, поменять один IF. Будете ли вы и