Я уже писал про использование нового фреймворка для C++ unit-тестов в Visual Studio 2012.
Продолжаем изучать новшества.
На работе обсуждали, зачем ввели атрибуты (модуля, класса, метода). Точного ответа пока не нашел, но обнаружил, что группировка тестов Traits отлично с ними работает. Update: тут есть немного подробностей про использование Traits.
И зачем нам теперь группировка по классам в Update 2? ;)
Правда и здесь не обошлось без косяков. Куда же без них? :)
Документация в MSDN утверждает что макросы объявления группы атрибутов модуля и класса имеют параметр. На самом деле они без параметров. И если с атрибутами классов из-за этого проблем не возникает (макрос объявляется внутри класса), то с модулем дела обстоят хуже. Макрос создания атрибутов модуля объявляет (и определяет) глобальную функцию __GetModuleMetadata, что при его использовании в нескольких файлах вызывает проблемы с линковкой.
Проблему можно решить использованием namespace'ов, своего на каждый модуль. Я также проверил и сделал другой макрос, с параметром - тоже работает и уже без namespace.
Итого: использовать можно. Группировка может быть полезной, если вы сейчас работаете с группой тестов и хотите запускать только их.
Осталось только неясным, где же ошибка: в MSDN или в CppUnitTest.h .
На самом деле, если честно, то группировка по классам из Update2 все равно нужна. Она отлично работает с Google C++ Test Framework тестами. Метод описанный выше тут не поможет.
Продолжаем изучать новшества.
На работе обсуждали, зачем ввели атрибуты (модуля, класса, метода). Точного ответа пока не нашел, но обнаружил, что группировка тестов Traits отлично с ними работает. Update: тут есть немного подробностей про использование Traits.
И зачем нам теперь группировка по классам в Update 2? ;)
Правда и здесь не обошлось без косяков. Куда же без них? :)
Документация в MSDN утверждает что макросы объявления группы атрибутов модуля и класса имеют параметр. На самом деле они без параметров. И если с атрибутами классов из-за этого проблем не возникает (макрос объявляется внутри класса), то с модулем дела обстоят хуже. Макрос создания атрибутов модуля объявляет (и определяет) глобальную функцию __GetModuleMetadata, что при его использовании в нескольких файлах вызывает проблемы с линковкой.
Проблему можно решить использованием namespace'ов, своего на каждый модуль. Я также проверил и сделал другой макрос, с параметром - тоже работает и уже без namespace.
Итого: использовать можно. Группировка может быть полезной, если вы сейчас работаете с группой тестов и хотите запускать только их.
Осталось только неясным, где же ошибка: в MSDN или в CppUnitTest.h .
На самом деле, если честно, то группировка по классам из Update2 все равно нужна. Она отлично работает с Google C++ Test Framework тестами. Метод описанный выше тут не поможет.
Комментарии
Отправить комментарий