Название: Видео-инструкция. Разработка ПО через тестирование (TDD, C++, Google Test) Отправлено: 8Observer8 от Апрель 29, 2014, 14:48 Инструментарий:
- Win7 - Qt 5.4 - MinGW 4.9.1 Моя видео-инстукция: http://www.youtube.com/watch?v=6pp8S56sS2Y&feature=youtu.be Название: Re: Разработка ПО на Qt c помощью методологии TDD и фреймворка Google Test (GTest) Отправлено: 8Observer8 от Апрель 29, 2014, 14:49 Оставлю место для примера сравнения вещественных результатов: https://code.google.com/p/googletest/wiki/AdvancedGuide#Floating-Point_Comparison
Название: Re: Разработка ПО на Qt c помощью методологии TDD и фреймворка Google Test (GTest) Отправлено: 8Observer8 от Апрель 29, 2014, 14:50 Общая информация о тестировании исключений на Google Test - здесь: https://code.google.com/p/googletest/wiki/AdvancedGuide#Exception_Assertions
Проект "TextFile" Исходники примера "TextFile": https://github.com/8Observer8/Qt_TextFile Описание: В этом примере целые числа читаются из файла "input.txt" и выводятся файл "output.txt". Числа не должны выходить из диапазона [-100, 100]. В противном случае, пользователю будет выведено сообщение: Цитировать Error: the argument "101" doesn't hit into the range [-100, 100] Пример демонстрирует, как тестировать свободные функции с помощью макроса "ASSERT_EQ( expected, actual )", и исключения с помощью макросов: ASSERT_THROW и ASSERT_NO_THROW. Пример выполнен по методологии TDD. То есть, к примеру: - сначала создавалась заглушка разрабатываемой функции - потом, описывалась функциональность будущей функции с помощью тестов на GTest - далее, реализовывалась функциональность и перезапускались тесты, до полного их выполнения Краткое пояснение к этому проекту: main.cpp Код
Функция "void readData( const QString &fileName, QString &content )" читает данные из файла с именем "fileName" и помещает их в строковый объект "content". Функция "void parseToIntArray( const QString &source, std::vector<int> &destination )" парсит данные из строкового объекта "content" в массив целых чисел. Массив выводится в файл "output.txt" с помощью функции: void writeData( const QString &fileName, const std::vector<int> &arr ) Эти функции выбрасывают исключения. Вот некоторые из них: - FileOpenError - "Ошибка открытия файла". К примеру, это исключение может выдать такой текст пользователю: Error: unable to open the file "input.txt" in the function "readData()" - FileReadError - "Ошибка чтения из файла" - EmptyArgument - "Входной аргумент представляет из себя пустой аргумент" В корневой папке этого проекта находится папка "GTests", в которой хранятся тестовые проекты на Qt для всех классов и свободных функций, которые можно было протестировать в этом проекте. Вот список этих тестовых проектов: - TextFile_EmptyArgument_gtests - TextFile_FileOpenError_gtests - TextFile_FileReadError_gtests - TextFile_FileWriteError_gtest - TextFile_isAllDigits_gtests - TextFile_NotNumber_gtests - TextFile_OutOfRange_gtests - TextFile_parseToIntArray_gtests Все детали вы увидите, когда просмотрите сам проект "TextFile" и проекты с тестами его модулей из папки GTests: https://github.com/8Observer8/Qt_TextFile Название: Re: Разработка ПО на Qt c помощью методологии TDD и фреймворка Google Test (GTest) Отправлено: 8Observer8 от Апрель 29, 2014, 17:52 Оставлю ещё место для инструкции по фреймворку Google Mock: https://code.google.com/p/googlemock/
Название: Re: Разработка ПО на Qt c помощью методологии TDD и фреймворка Google Test (GTest) Отправлено: 8Observer8 от Апрель 29, 2014, 21:01 Пока оставлю пару полезных заметок про вещественные результаты и исключения.
При нормальных условиях функция не должна выбрасывать исключения, поэтому всегда в тестах надо использовать ASSERT_NO_THROW: Код
Если функция при определённых входных данных выбрасывает исключение и вы его ожидаете (например, ваше исключение называется OutOfRange), то надо указать тип исключения: Код
Если вы хотите сравнивать вещественные: ожидаемый результат и выходной результат функции с погрешностью дельта, то надо использовать ASSERT_NEAR: Код
P.S. Лишние сообщения потом удалю. Название: Re: Разработка ПО на Qt c помощью методологии TDD и фреймворка Google Test (GTest) Отправлено: xintrea от Апрель 30, 2014, 09:18 Спасибо, тема важная. Будем посмотреть.
Название: Re: Разработка ПО на Qt c помощью методологии TDD и фреймворка Google Test (GTest) Отправлено: 8Observer8 от Апрель 30, 2014, 11:10 Спасибо за отзыв :) Если я в инструкции где-то допустил ошибку или будут предложения по улучшению, то обязательно пишите :)
Название: Re: Разработка ПО на Qt c помощью методологии TDD и фреймворка Google Test (GTest) Отправлено: pilot.net от Май 01, 2014, 06:35 Для кого эта 'документация' для деобилов ? Это элементарные вещи
Лучше скажи как добавить пост билд евент в про файлы чтобы он в вижуал студии работал Название: Re: Разработка ПО на Qt c помощью методологии TDD и фреймворка Google Test (GTest) Отправлено: _Vitaliy_ от Май 01, 2014, 11:05 Цитировать Для кого эта 'документация' для деобилов ? Вы сначала внесите некоторый интеллектуальный вклад в ресурс, а потом позволяйте себе комментарии подобного вида.Цитировать Лучше скажи как... со второго сообщения и сразу на Ты... несерьезно. Вы сами разберитесь с данным вопросом и выложите в разделе уроки, распишите так, чтобы всякие (позволю Ваше определение) деобилы не задавали вопросы... З.Ы. ничего личного. Название: Re: Разработка ПО на Qt c помощью методологии TDD и фреймворка Google Test (GTest) Отправлено: 8Observer8 от Июнь 26, 2014, 08:06 Добавил пример: http://www.prog.org.ru/index.php?topic=26944.msg194685#msg194685
Название: Re: Видео-инструкция. Разработка ПО через тестирование (TDD, C++, Google Test) Отправлено: 8Observer8 от Февраль 14, 2015, 16:17 Заменил инструкцию
Моя видео-инстукция: http://www.youtube.com/watch?v=6pp8S56sS2Y&feature=youtu.be |