Форум программистов, компьютерный форум CyberForum.ru
Наши страницы

C++

Войти
Регистрация
Восстановить пароль
 
 
Рейтинг: Рейтинг темы: голосов - 74, средняя оценка - 4.92
greeezz
273 / 166 / 4
Регистрация: 10.07.2011
Сообщений: 441
#1

С++ Unit Test (модульное тестирование) - C++

06.02.2012, 22:42. Просмотров 9783. Ответов 48
Метки нет (Все метки)

Вопроса по сути два.
1. что используете для модульного тестирования и почему отдаете этому предпочтение.
2. если используете eclipse, то очень интересует процесс конфигурирования eclipse для работы с фрэймворком тестирования.

Почему задаю вопрос... Гуглю неделю на предмет поиска данной инфорации. И прихожу в недоумение от того что 90% статей которые удалось найти не моложе 2010 года.. Как результат не могу найти нормального объяснения процесса конфигурирования IDE и фреймворка.
Я читал про : googletest, cpptest, boost.test.
к сожалению ни одну из них не удалось по человечески настроить. вроде что-то работает.. но как-то частично.. то на библиотеки ругань... то якобы не подключены пути...

Буду честен... у меня конкретный мозг оверфлоу.... я топчусь на месте. Буду благодарен за помощь.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
06.02.2012, 22:42
Здравствуйте! Я подобрал для вас темы с ответами на вопрос С++ Unit Test (модульное тестирование) (C++):

Нагрузочное, модульное, интеграционное тестирование - C++
Здравствуйте, в рамках практики нужно сделать нагрузочное, модульное, интеграционное тестирование своего проекта в C++, но опыта ни...

Написать функцию TEST(A,k) - C++
Написать функцию TEST(A,k), принимающую значение True, если се элементы k-й строки четные и положительные.

Unit - C++ Builder
У мя такой вопрос: Можно ли прасмотреть весь код приложения в одном файле, приложение написано на С++ Builder 6, если да, то как он...

Unit - C++ Builder
Плиз помогите подключить модуль Delphi 7 в С++ Builder 6 и как его обьявить в проекте т.е. у мя есть модуль Delphi который шифрует...

Проблемы с использованием 2-х Unit - C++ Builder
Есть 1 форма и 2 юнита. Unit1 основной, а Unit2 добавлен. К переменным Unit1 могу обратиться только так RJW->Xback, а на прямую не...

Вызов Unit'a по кнопке - C++ Builder
Привет, есть два unit'a один с формой другой нет. 1)Unit #include <vcl.h> #include <Winsock2.h> #include <Windows.h> ...

48
niXman
Эксперт С++
3138 / 1450 / 49
Регистрация: 09.08.2009
Сообщений: 3,441
Записей в блоге: 2
06.02.2012, 22:46 #2
Цитата Сообщение от greeezz Посмотреть сообщение
что используете для модульного тестирования
boost.test

Цитата Сообщение от greeezz Посмотреть сообщение
почему отдаете этому предпочтение
потому что буст у меня установлен по дефолту. что-то дополнительное ставить лень. да и смысла особого не вижу.
0
greeezz
273 / 166 / 4
Регистрация: 10.07.2011
Сообщений: 441
06.02.2012, 22:49  [ТС] #3
niXman, а какой средой разработки пользуетесь ?

Не по теме:

вообще я от boost малось в шоке пока.. читаешь код написаный с boost и скалдывается впечатление что это не с++ код а нечтно иное... как дпугой язык какой-то

0
alex_x_x
бжни
2449 / 1654 / 84
Регистрация: 14.05.2009
Сообщений: 7,162
06.02.2012, 22:49 #4
использовал cppunit, cpptest
пробовал из boost'a
1) почему - ну очевидно требование высокого качества кода
2) в eclipse работал только с junit (java ессно), поэтому ничего особенно сказать не могу

по поводу cppunit, cpptest - там никакая специфическая настройка особенно не требуется, все довольно просто (какие-то сложности возможны разве только при прикручивании результатов к какому-нибудь hadson'у)

пользую в основном cunit
0
greeezz
273 / 166 / 4
Регистрация: 10.07.2011
Сообщений: 441
06.02.2012, 23:15  [ТС] #5
Цитата Сообщение от alex_x_x Посмотреть сообщение
там никакая специфическая настройка особенно не требуется,
я в этом абсолютно уверен... но я реально топчусь на месте...
в моем понимании для использования фреймворка тестирования необходимо подключить библиотеки которые я собираюсь использовать для создании классов тестов. компилировать проект и запускать тестирование либо с командной строки либо из IDE...
так вот для этих казалось тривиальных задач я не могу найти решения...
0
alex_x_x
бжни
2449 / 1654 / 84
Регистрация: 14.05.2009
Сообщений: 7,162
07.02.2012, 00:37 #6
greeezz, вы себе неверно представляете, для их использования нужно писать код, ну я серьезно
0
niXman
Эксперт С++
3138 / 1450 / 49
Регистрация: 09.08.2009
Сообщений: 3,441
Записей в блоге: 2
07.02.2012, 00:57 #7
Цитата Сообщение от greeezz Посмотреть сообщение
а какой средой разработки пользуетесь ?
QtCreator.
0
greeezz
273 / 166 / 4
Регистрация: 10.07.2011
Сообщений: 441
07.02.2012, 06:23  [ТС] #8
Цитата Сообщение от alex_x_x Посмотреть сообщение
greeezz, вы себе неверно представляете, для их использования нужно писать код, ну я серьезно

в принципе я могу понять почему вы это написали... тут на форуме много "умников" попадаются которые например просят написать квадрат.
Поэтому лишь скажу что я знаю что такое модульное тестирования и с чем его едят. Моя проблема в том что я никак немогу нормально настроить eclipse и test фреймворк так чтобы они дружили.
0
Evg
07.02.2012, 09:01
  #9

Не по теме:

Немного отвлечённый вопрос по теме: а шо такое unit-тестирование? Погуглил cppunit, нашёл русскоязычную статью http://sleepylearner.blogspot.com/2007/04/cppunit.html Только нифига не понял, зачем такие пляски с бубном на ровном месте. Если не сложно, приведите конкретный пример того, что при помощи этой нанотехнологии можно оттестировать, и чем это хуже обычного тестирования (т.е. запуск тестовых ситуаций, НЕ встроенных в программу, а внешними средствами тестирования)?

0
CheshireCat
Эксперт С++
2893 / 1242 / 78
Регистрация: 27.05.2008
Сообщений: 3,389
07.02.2012, 10:05 #10
Я использую UnitTest++ - потому что основная среда MS VC++ 2005.
0
ForEveR
В астрале
Эксперт С++
7979 / 4738 / 321
Регистрация: 24.06.2010
Сообщений: 10,543
Завершенные тесты: 3
07.02.2012, 11:04 #11
Цитата Сообщение от greeezz Посмотреть сообщение
1. что используете для модульного тестирования и почему отдаете этому предпочтение.
Бустовый тестовый фреймворк.
Так на работе повелось в наших проектах. Да и вообще удобная штука. Для своих проектов тоже использовал.
0
alex_x_x
бжни
2449 / 1654 / 84
Регистрация: 14.05.2009
Сообщений: 7,162
07.02.2012, 12:59 #12
Цитата Сообщение от greeezz Посмотреть сообщение
Моя проблема в том что я никак немогу нормально настроить eclipse и test фреймворк так чтобы они дружили.
конфигурация и выбор режима работы тех же cppunit и cpptest происходит только за счет написания кода, ну например для cunit

C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
    
    CU_pSuite pSuite = NULL;
    CU_set_output_filename("my_utest");
 
    if (CUE_SUCCESS != CU_initialize_registry())
    {
        return CU_get_error();
    }
 
    pSuite = CU_add_suite("my_utest", init_suite, clean_suite);
    if (!pSuite) 
    {
        CU_cleanup_registry();
        return CU_get_error();
    }
    if
    (
        (NULL == CU_add_test(pSuite, "test.test1()", (CU_TestFunc) test1))         ||
        (NULL == CU_add_test(pSuite, "test.test2()", (CU_TestFunc) test2))         ||
        (NULL == CU_add_test(pSuite, "test.test3()", (CU_TestFunc) test3))         ||
    )
    {
        CU_cleanup_registry();
        return CU_get_error();
    }
 
    CU_automated_run_tests();
    CU_cleanup_registry();
0
ForEveR
В астрале
Эксперт С++
7979 / 4738 / 321
Регистрация: 24.06.2010
Сообщений: 10,543
Завершенные тесты: 3
07.02.2012, 13:34 #13
К примеру буст.
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
#define BOOST_UTF8_BEGIN_NAMESPACE namespace test {
#define BOOST_UTF8_END_NAMESPACE }
#define BOOST_UTF8_DECL
 
#include <boost/test/included/unit_test.hpp>
 
BOOST_AUTO_TEST_CASE(test_correct)
{
    BOOST_CHECK(true == !!true);
    BOOST_CHECK(false == true);
}
 
boost::unit_test::test_suite* init_unit_test_suite(int argc, char* argv[])
{
    boost::unit_test::framework::master_test_suite().p_name.value = "test";
    return 0;
}
http://liveworkspace.org/code/b2d4738841ca95996a173b436d7aa0ef
0
greeezz
273 / 166 / 4
Регистрация: 10.07.2011
Сообщений: 441
07.02.2012, 18:29  [ТС] #14
Цитата Сообщение от Evg Посмотреть сообщение
Только нифига не понял, зачем такие пляски с бубном на ровном месте. Если не сложно, приведите конкретный пример того, что при помощи этой нанотехнологии можно оттестировать, и чем это хуже обычного тестирования (т.е. запуск тестовых ситуаций, НЕ встроенных в программу, а внешними средствами тестирования)?
Сколько тестов вы делаете после того как внесли изменения в программу? 10, 20 … 200?
Вы тратите постоянно много времени на то чтобы все их выполнить после внесения изменений в программу. Имея написанные тесты вы просто прогоняете их каждый раз после внесения изменений и убеждаетесь что у вас все работает корректно либо что-то сломалось. Таким образом вы существенно сокращаете врмея на тестирование и увеличиваете качество вашего кода.

Существует понятие Test Driven Development которое предполагает
1. Написать тест.
2. Убедится что тест не проходит.
3. Написать минимум кода для успешного выполнения кода.
4. Выполнить тест. Убедится что тест проходит успешно.
5. повторить цикл.
6. и т.д.

Подробнее об этом лучше почитать ТУТ

Добавлено через 9 минут
Цитата Сообщение от alex_x_x Посмотреть сообщение
конфигурация и выбор режима работы тех же cppunit и cpptest происходит только за счет написания кода, ну например для cunit
Вопрос не в примерах кода тестов. Их полно в сети. Только они кстати выглядят именно так как вы написали. Без единого комментария. Что печально. Потому что не все очевидно в таком коде.
Вообще мой вопрос в том как правильно настроить eclipse.

С cppUnit я уже практически разобрался.
1. Скпомпилировал статическую библиотеку фреймворка.
2. подключил ее где надо в эклипсе.
3. указал нужные пути на инклюды.
и т.д.

Пока на вид вроде что-то работает. Сейчас разбираюсь с написанием самих тестов и проверяю все ли хорошо настроено. Возможно попозже напишу инструкцию и выложу на форуме.
1
Evg
Эксперт CАвтор FAQ
18026 / 6258 / 427
Регистрация: 30.03.2009
Сообщений: 17,195
Записей в блоге: 27
07.02.2012, 19:09 #15
Цитата Сообщение от greeezz Посмотреть сообщение
Имея написанные тесты вы просто прогоняете их каждый раз после внесения изменений и убеждаетесь что у вас все работает корректно либо что-то сломалось
Да собственно, последние лет 13-14 я именно так и работаю. Только без всяких наносистем типа cppunit, истинное назначение которого я так и не смог понять
0
07.02.2012, 19:09
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
07.02.2012, 19:09
Привет! Вот еще темы с ответами:

включить один unit к другому - C++ Builder
блин сижу туплю...никак не найду! как это сделать, есть два unit: unit1.cpp, unit1.h unit2.cpp, unit2.h один главный, в другом функции ,...

Включение в проект нового Unit - C++ Builder
Всем привет! Проблемма состоит в том, что при подключении в проект новой Unit, с именем &quot;Unit2&quot;, в которой создан ноывй класс...

Обозначить функцию в пустом Unit - C++ Builder
Создал новый юнит (отдельно для сетевых функций), создал динамически сокет, объявляю функции , а он ... E2034 Cannot convert...

Unit -тестирование или автоматизированное тестирование - Программирование Android
Доброго времени суток. Я программирую «для себя» второй год, на выходе получаются разного рода приложения от постоянно подающих с...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
15
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru