|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
|
Опции темы | Поиск в этой теме |
29.08.2013, 00:06 | #11 | |
Старожил
Регистрация: 02.01.2011
Сообщений: 3,323
|
Цитата:
|
|
29.08.2013, 01:55 | #12 | |
Старожил
Регистрация: 16.12.2011
Сообщений: 2,329
|
Цитата:
Впервые слышу о "экспектах" и о "матчерах". Что это такое? gMock ни разу не использовал. Даже не очевидна его полезность. |
|
29.08.2013, 07:40 | #13 |
C/C++, Java
Участник клуба
Регистрация: 28.03.2012
Сообщений: 1,679
|
Я тоже откровенно говоря никогда не сталкивался.... Интересно будет почитать тему.
"Keep it simple" - придерживайтесь простоты!
Уильям Оккам - "Не следует множить сущее без необходимости" Сложность - враг простоты и удобства! |
29.08.2013, 10:45 | #14 | |
Старожил
Регистрация: 16.12.2011
Сообщений: 2,329
|
Цитата:
В общем, "матчеры" - это средства с помощью которых конструируется ожидаемая модель поведения мок-объекта. Смысл в том, что бы тестами контролировать поведение механизма. То есть, нюансы и ход его внутренней работы. |
|
04.01.2014, 15:20 | #15 |
Старожил
Регистрация: 02.01.2011
Сообщений: 3,323
|
Недавно нашёл более простой способ установки инструментария для разработки ПО на 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. |
04.01.2014, 15:21 | #16 |
Старожил
Регистрация: 02.01.2011
Сообщений: 3,323
|
Список пакетов, которые нужно выбрать как на следующем рисунке (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()") - это просто "заглушка", т.е. она не обрабатывает входные данные, а просто возвращает фиксированный результат): Код:
|
04.01.2014, 15:22 | #17 |
Старожил
Регистрация: 02.01.2011
Сообщений: 3,323
|
- ставим галочку напротив функции "less_or_more(int,int)", как на рисунке:
- нажимаем кнопку "Next" -> нажимаем кнопку "Finish" - заменяем содержимое файлов "newtestclass.h" и "newtestclass.cpp" следующим: newtestclass.h Код:
Код:
- мы увидим результаты тестов: - отрываем файл "main.cpp" и пишем реализацию функции: Код:
- результаты тестов: |
04.01.2014, 16:07 | #18 |
Старожил
Регистрация: 28.01.2009
Сообщений: 21,000
|
может немного не в тему, но ктонить разбирался с тестами в MSVC++?
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел. Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите. |
29.04.2014, 16:42 | #19 |
Старожил
Регистрация: 02.01.2011
Сообщений: 3,323
|
Фреймворк QTest не поддерживает ни тестирование исключений, ни сравнение вещественных результатов, ни Mock-объектов. Здесь инструкция по самому продвинутому TDD-фреймворку на C++ - http://www.prog.org.ru/topic_26944_0.html
Последний раз редактировалось 8Observer8; 30.04.2014 в 07:58. |
26.06.2014, 09:32 | #20 |
Старожил
Регистрация: 02.01.2011
Сообщений: 3,323
|
Написал пример: 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 |