Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 02.02.2015, 17:46   #21
magnet
Пользователь
 
Регистрация: 02.02.2015
Сообщений: 24
По умолчанию

Цитата:
Сообщение от 8Observer8 Посмотреть сообщение
- ставим галочку напротив функции "less_or_more(int,int)", как на рисунке:



- нажимаем кнопку "Next" -> нажимаем кнопку "Finish"

- заменяем содержимое файлов "newtestclass.h" и "newtestclass.cpp" следующим:

newtestclass.h
Код:
#ifndef NEWTESTCLASS_H
#define	NEWTESTCLASS_H

#include <cppunit/extensions/HelperMacros.h>

class newtestclass : public CPPUNIT_NS::TestFixture {
    CPPUNIT_TEST_SUITE(newtestclass);

    CPPUNIT_TEST(testLess_or_more_001);
    CPPUNIT_TEST(testLess_or_more_002);
    CPPUNIT_TEST(testLess_or_more_003);
    CPPUNIT_TEST(testLess_or_more_004);
    CPPUNIT_TEST(testLess_or_more_005);
    CPPUNIT_TEST(testLess_or_more_006);
    CPPUNIT_TEST(testLess_or_more_007);
    CPPUNIT_TEST(testLess_or_more_008);
    CPPUNIT_TEST(testLess_or_more_009);
    CPPUNIT_TEST(testLess_or_more_010);

    CPPUNIT_TEST_SUITE_END();

public:
    newtestclass();
    virtual ~newtestclass();
    void setUp();
    void tearDown();

private:
    void testLess_or_more_001();
    void testLess_or_more_002();
    void testLess_or_more_003();
    void testLess_or_more_004();
    void testLess_or_more_005();
    void testLess_or_more_006();
    void testLess_or_more_007();
    void testLess_or_more_008();
    void testLess_or_more_009();
    void testLess_or_more_010();
};

#endif	/* NEWTESTCLASS_H */
....
8Observer8, хорошо потрудился.
Я понимаю что это всего лишь пошаговая инструкция, но раз дал заголовок "Разработка ПО на C++ через тестирование" то не мешало бы внести несколько изменений.
На пример название тестов. Название тестов (как и любых функций), должно показывать что тест проверяет. Как опция, темплейт названия теста может быть таким:
<проверяемая функция>_<описание параметров>[_<ожидаемый результат>]

Пример:
testLess_or_more_FirstBigger_One
testLess_or_more_BothEquals_Zero

Так же, стоит использовать коментарии в проверочных макросах. Пример:

Вместо :
CPPUNIT_ASSERT_EQUAL(expected, actual);
Такое:
CPPUNIT_ASSERT_EQUAL_MESSAGE("Secon d bigger then First", expected, actual);

Удачи тебе
magnet вне форума Ответить с цитированием
Старый 02.02.2015, 18:25   #22
magnet
Пользователь
 
Регистрация: 02.02.2015
Сообщений: 24
По умолчанию

Цитата:
Сообщение от 8Observer8 Посмотреть сообщение
Добавление тестов
...
СТОП! А это уже не "Разработка ПО на C++ через тестирование"
При использовании TDD тесты добавляются по одному. Каждый тест, проверяет новую, еще не имплементированную фичу.

А ты, в примере, добавляешь сразу кучу тестов, часть из коротых проверяет один и тот же функционал, а потом добавляешь кучу кода.

Если взялся обучать (даже новичков, хм..особенно новичков) , надо это делать правильно.
magnet вне форума Ответить с цитированием
Старый 02.02.2015, 18:55   #23
8Observer8
Старожил
 
Аватар для 8Observer8
 
Регистрация: 02.01.2011
Сообщений: 3,323
По умолчанию

По поводу имён функций и поясняющих сообщений согласен, а по остальному нет

Функция:
Код:
int less_or_more(int first, int second);
принимает два аргумента и возвращает:
  • ноль, если аргументы равны;
  • 1, если первый аргумент больше второго
  • -1, если первый аргумент меньше второго

По TDD нужно сначала написать тесты, запустить и увидеть, что все тесты красные, а потом реализовывать функционал, пока они не станут зелёными. Если мы хотим новый функционал, то мы сначала пишем дополнительные тесты (один или несколько), запускаем, видим, что новые тесты красные и дописываем функционал, добиваясь, чтобы все тесты стали зелёными, постоянно перезапуская тесты

Я понял, о чём вы. Вы говорите, что нужно написать один тест, сделать его зелёным. Потом написать второй и т.д. Но TDD не запрещает написать сразу два и более тестов

Советую вам осваивать GTest и GMock. Это намного более богатые, популярные и удобные фреймворки

У меня есть инструкция по GTest под среду Qt Creator, но её нужно переписать, она слишком подробная: http://www.prog.org.ru/topic_26944_0.html
8Observer8 вне форума Ответить с цитированием
Старый 03.02.2015, 13:35   #24
magnet
Пользователь
 
Регистрация: 02.02.2015
Сообщений: 24
По умолчанию

Цитата:
Сообщение от 8Observer8 Посмотреть сообщение

По TDD нужно сначала написать тесты, запустить и увидеть, что все тесты красные, а потом реализовывать функционал, пока они не станут зелёными. Если мы хотим новый функционал, то мы сначала пишем дополнительные тесты (один или несколько), запускаем, видим, что новые тесты красные и дописываем функционал, добиваясь, чтобы все тесты стали зелёными, постоянно перезапуская тесты

Я понял, о чём вы. Вы говорите, что нужно написать один тест, сделать его зелёным. Потом написать второй и т.д. Но TDD не запрещает написать сразу два и более тестов
Конечно не запрешает - никто никому ничего не запрещает (не хочу разворашивать священные войны. Если вы хотите серьезно использовать TDD, то вам стоит глубже изучить тему, а не зацикливаться на выборе фреймворков).

Цитата:
Сообщение от 8Observer8 Посмотреть сообщение
Советую вам осваивать GTest и GMock. Это намного более богатые, популярные и удобные фреймворки

У меня есть инструкция по GTest под среду Qt Creator, но её нужно переписать, она слишком подробная: http://www.prog.org.ru/topic_26944_0.html
Спасибо конечно, но у нас здесь не обсуждение хороших/плохих фреймворков.
Но если мы уже заговорили, посоветовал бы вам Typemock Isolator++
magnet вне форума Ответить с цитированием
Старый 03.02.2015, 13:37   #25
magnet
Пользователь
 
Регистрация: 02.02.2015
Сообщений: 24
По умолчанию

Цитата:
Сообщение от 8Observer8 Посмотреть сообщение

По TDD нужно сначала написать тесты, запустить и увидеть, что все тесты красные, а потом реализовывать функционал, пока они не станут зелёными. Если мы хотим новый функционал, то мы сначала пишем дополнительные тесты (один или несколько), запускаем, видим, что новые тесты красные и дописываем функционал, добиваясь, чтобы все тесты стали зелёными, постоянно перезапуская тесты

Я понял, о чём вы. Вы говорите, что нужно написать один тест, сделать его зелёным. Потом написать второй и т.д. Но TDD не запрещает написать сразу два и более тестов
Если мы уже заговорили о TDD, то не надо забывать про рефакторинг, после того как тесты стали залеными. Ведь это все же Development...
magnet вне форума Ответить с цитированием
Старый 04.02.2015, 11:19   #26
8Observer8
Старожил
 
Аватар для 8Observer8
 
Регистрация: 02.01.2011
Сообщений: 3,323
По умолчанию

Цитата:
Сообщение от magnet Посмотреть сообщение
Спасибо конечно, но у нас здесь не обсуждение хороших/плохих фреймворков.
Но если мы уже заговорили, посоветовал бы вам Typemock Isolator++
Что не говорите, а Google Test и Google Mock лучшие фреймворки на сегодня
8Observer8 вне форума Ответить с цитированием
Старый 04.02.2015, 12:58   #27
_Bers
Старожил
 
Регистрация: 16.12.2011
Сообщений: 2,329
По умолчанию

Цитата:
Сообщение от 8Observer8 Посмотреть сообщение
Что не говорите, а Google Test и Google Mock лучшие фреймворки на сегодня
Бесспорный факт.


https://en.wikipedia.org/wiki/List_o...g_frameworks#C
_Bers вне форума Ответить с цитированием
Старый 04.02.2015, 13:01   #28
magnet
Пользователь
 
Регистрация: 02.02.2015
Сообщений: 24
По умолчанию

Цитата:
Сообщение от 8Observer8 Посмотреть сообщение
Что не говорите, а Google Test и Google Mock лучшие фреймворки на сегодня
Как я уже сказал, мы не спорим о фреймворках. Тема - разработка через тестирование (TDD).

Кроме того, в реальной жизни, не всегда есть возможность выбора "лучшего" языка, "лучшего" фрейморка. Да и "лучший" понятие относительное...
magnet вне форума Ответить с цитированием
Старый 14.02.2015, 17:14   #29
8Observer8
Старожил
 
Аватар для 8Observer8
 
Регистрация: 02.01.2011
Сообщений: 3,323
По умолчанию

Моя видео-инструкция: Разработка ПО через тестирование (TDD, C++, Google Test, Qt Creator, MinGW)
8Observer8 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Разработка, отладка, тестирование и документирование программ на Паскале Химия Помощь студентам 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