![]() |
|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
![]() |
|
|
Опции темы | Поиск в этой теме |
![]() |
#11 | |
Старожил
Регистрация: 02.01.2011
Сообщений: 3,327
|
![]() Цитата:
|
|
![]() |
![]() |
![]() |
#12 | |
Старожил
Регистрация: 16.12.2011
Сообщений: 2,329
|
![]() Цитата:
Впервые слышу о "экспектах" и о "матчерах". Что это такое? gMock ни разу не использовал. Даже не очевидна его полезность. |
|
![]() |
![]() |
![]() |
#13 | |
C/C++, Java
Участник клуба
Регистрация: 28.03.2012
Сообщений: 1,680
|
![]() Цитата:
![]() ![]()
"Keep it simple" - придерживайтесь простоты!
Уильям Оккам - "Не следует множить сущее без необходимости" Сложность - враг простоты и удобства! |
|
![]() |
![]() |
![]() |
#14 | |
Старожил
Регистрация: 16.12.2011
Сообщений: 2,329
|
![]() Цитата:
В общем, "матчеры" - это средства с помощью которых конструируется ожидаемая модель поведения мок-объекта. Смысл в том, что бы тестами контролировать поведение механизма. То есть, нюансы и ход его внутренней работы. |
|
![]() |
![]() |
![]() |
#15 |
Старожил
Регистрация: 02.01.2011
Сообщений: 3,327
|
![]()
Недавно нашёл более простой способ установки инструментария для разработки ПО на C++ через тестирование (Test-Driven Development). Мы просто скачиваем пакеты из набора Cygwin и подключаем их к среде разработки (об этом подробно ниже).
Принцип TDD - сначала пишем тесты для пустого модуля (модуль - это функция или класс), а потом реализацию для этого модуля. Напомню для чего нужен TDD. Такой способ разработки позволяет: - описывать функциональность до написания самой функции - демонстрировать, что функциональность реализована, как это и требовалось (заказчику, пользователю и\или самому себе) - рефакторить (усовершенствовать код с целью оптимизации и/или для улучшения читабельности) без опасения нарушения функциональности Такой способ разработки идеально подходит для решения задач, например здесь: http://acmp.ru/?main=tasks Процесс установки не требует сборки cppunit вручную, так как этот пакет входит в состав Cygwin (Cygwin - набор инструментария для разработчика). Нам нужно будет только установить пакеты из набора Cygwin и среду NetBeans (которая позволяет автоматически создавать cppunit-тесты). Ещё создадим проект для демонстрации разработки через тестирование. Опишу пошагово весь процесс. Начну с самого начала. Допустим у нас нет ничего для разработки. - скачиваем и запускаем "setup-x86.exe" (или "setup-x86_64.exe"): http://cygwin.com/ - на следующих рисунках показаны этапы установки (к последнему рисунку прилагается список пакетов, которые нужно выбрать для установки) ![]() ![]() ![]() ![]() ![]() ![]() Последний раз редактировалось 8Observer8; 04.01.2014 в 15:57. |
![]() |
![]() |
![]() |
#16 |
Старожил
Регистрация: 02.01.2011
Сообщений: 3,327
|
![]()
Список пакетов, которые нужно выбрать как на следующем рисунке (mingw-gcc-g++ - выбирать не нужно! он выбран для примера)
- cppunit: C++ unit testing framework - gcc-core: GNU Compiler Collection (C, OpenMP) - gcc-g++: GNU Compiler Collection (C++) - gdb: The GNU Debugger - make: The GNU version of the 'make' utility ![]() - нажимаем кнопку "Next" и соглашаемся с установкой всех зависимостей - дожимаемся окончания установки - для работы среды NetBeans нужно Java-окружение. Устанавливаем: http://java.com/ - скачиваем и устанавливаем NetBeans (я предпочитаю английскую версию) https://netbeans.org/downloads/ - запускаем NetBeans и в меню выбираем "Tools" -> "Options" -> в верхней части выбираем "C/C++" - нажимаем кнопку "Add..." -> нажимаем кнопку "Browser" и выбираем путь "C:\cygwin64\bin" (при необходимости выбираем из выпадающего списка с названием "Tool Collection Family" - выбираем "Cygwin 4.x") Выглядит это так: ![]() - теперь протестируем, для этого решим задачу: http://acmp.ru/index.asp?main=task&id_task=25 - в меню выбираем "File" -> "New Project..." - выбираем, как на рисунке: ![]() - нажимаем кнопку "Next" -> вводим имя проекта: acmp_0025_less_more -> нажимаем кнопку "Finish" - в файл "main.cpp" копируем (на данном этапе, функция для решения задачи (т.е. "less_or_more()") - это просто "заглушка", т.е. она не обрабатывает входные данные, а просто возвращает фиксированный результат): Код:
![]() |
![]() |
![]() |
![]() |
#17 |
Старожил
Регистрация: 02.01.2011
Сообщений: 3,327
|
![]()
- ставим галочку напротив функции "less_or_more(int,int)", как на рисунке:
![]() - нажимаем кнопку "Next" -> нажимаем кнопку "Finish" - заменяем содержимое файлов "newtestclass.h" и "newtestclass.cpp" следующим: newtestclass.h Код:
Код:
- мы увидим результаты тестов: ![]() - отрываем файл "main.cpp" и пишем реализацию функции: Код:
- результаты тестов: ![]() |
![]() |
![]() |
![]() |
#18 |
Старожил
Регистрация: 28.01.2009
Сообщений: 21,000
|
![]()
может немного не в тему, но ктонить разбирался с тестами в MSVC++?
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел. Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите. |
![]() |
![]() |
![]() |
#19 |
Старожил
Регистрация: 02.01.2011
Сообщений: 3,327
|
![]()
Фреймворк QTest не поддерживает ни тестирование исключений, ни сравнение вещественных результатов, ни Mock-объектов. Здесь инструкция по самому продвинутому TDD-фреймворку на C++ - http://www.prog.org.ru/topic_26944_0.html
Последний раз редактировалось 8Observer8; 30.04.2014 в 07:58. |
![]() |
![]() |
![]() |
#20 |
Старожил
Регистрация: 02.01.2011
Сообщений: 3,327
|
![]()
Написал пример: http://www.prog.org.ru/index.php?top...4685#msg194685
|
![]() |
![]() |
![]() |
|
![]() |
||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Разработка, отладка, тестирование и документирование программ на Паскале | Химия | Помощь студентам | 0 | 18.12.2011 23:19 |
статья - Test-Driven Development для Java(TDD, разработка через тестирование) на практике. | Pblog | Обсуждение статей | 0 | 16.06.2011 23:10 |
Пользование cppunit? | mike_tihomirov | Общие вопросы C/C++ | 0 | 15.04.2010 23:56 |
Тесты CPPUNIT | Lazio | Помощь студентам | 0 | 13.12.2009 13:18 |
Разработка тестов CPPUNIT | Lazio | Фриланс | 1 | 11.12.2009 00:55 |