Deutsch
Germany.ruФорумы → Архив Досок→ Программирование

тестирование DLL-Проэкта с помощью cppUnit

408  
krys завсегдатай19.04.09 21:12
NEW 19.04.09 21:12 
Доброе время суток.
Я работаю с Visual Studio 2005 и хотел бы при помощи cppUnit
для моего DLL-Проэкта (динамическая библиотека) создать
автоматические тесты.
Вопрос в том как мне получить доступ к функциям проекта из "cppUnit"- Проэкта?
Вопрос в догонку?
Как тестировать приватные функции класса?
стойте там и слушайте сюда, именно отсюда будет проистекать
#1 
  scorpi_ прохожий19.04.09 22:28
NEW 19.04.09 22:28 
в ответ krys 19.04.09 21:12, Последний раз изменено 19.04.09 22:34 (scorpi_)
cppUnit не самая удобная либа. Возьми лучше Boost.Test или UnitTest++. Что касается private функций, то я считаю, что их следует тестировать только через публичные функции.
Первый вопрос не вполне понятен. Сделай в том же solution проект для тестов, пропиши его в зависимости к основному, а исполнение тестовой программы пропиши в post-build основного проекта.
Можешь ещё почитать парочку вопросов на SO:
Should non-public functions be unit tested and how?
testing classes
#2 
Simple Nothing is f*cked19.04.09 23:29
Simple
NEW 19.04.09 23:29 
в ответ scorpi_ 19.04.09 22:28
Он имеет в виду классы/функции, которые не экспортируются из dll. Я решил эту проблему сл. образом: вдобавок к обычной цели (dll) сделал статическую, которую и линкую к тестовой exe. С помощью cmake это делается одной строкой :)
#3 
Simple Nothing is f*cked19.04.09 23:36
Simple
NEW 19.04.09 23:36 
в ответ krys 19.04.09 21:12
  scorpi_ прохожий19.04.09 23:39
19.04.09 23:39 
в ответ Simple 19.04.09 23:29
В ответ на:
Он имеет в виду классы/функции, которые не экспортируются из dll.

Я вообще не понимаю при чём тут это. Unit test'ы работают на уровне исходников, ты просто инклюдишь/включаешь в проект нужные файлы...
#5 
Simple Nothing is f*cked19.04.09 23:42
Simple
NEW 19.04.09 23:42 
в ответ scorpi_ 19.04.09 23:39
Мне это почему-то казалось нехорошим приемом, но раз ты это говоришь... :)
#6 
  scorpi_ прохожий19.04.09 23:44
NEW 19.04.09 23:44 
в ответ Simple 19.04.09 23:36
Дискуссия так себе. Я пожалуй с o-l-o и iain соглашусь.
#7 
  scorpi_ прохожий19.04.09 23:46
NEW 19.04.09 23:46 
в ответ Simple 19.04.09 23:42
Ну ты же фактически тоже включаешь в тестовый проект хедеры и либ-файлы. Либ-файлы или cpp-файлы -- это уже детали.
#8 
Simple Nothing is f*cked20.04.09 06:30
Simple
NEW 20.04.09 06:30 
в ответ scorpi_ 19.04.09 23:46
Да, ты прав.
#9 
  scorpi_ прохожий20.04.09 13:56
20.04.09 13:56 
в ответ Simple 20.04.09 06:30
В конкретном данном случае прав ты. Надо сказать, что в последнее время я работал с gcc и make, так что мои рассуждения имели несколько теоретический характер. Поигравшись немного со студией, я думаю, что в случае DLL-проекта лучше сделать три под-проекта в одном solution'е: lib, dll, test. Test зависит от lib, dll зависит от test. Test.exe запускается в постбилде самого себя.
PS Вообще говоря всё это не совсем удобно делать со студией. Make'ом удобнее разбить тесты на части, так чтобы при компиляции небольшой части исходников запускалась компиляция и исполнение тестов только для этой части проекта.
#10 
Murr коренной житель20.04.09 14:43
Murr
NEW 20.04.09 14:43 
в ответ scorpi_ 20.04.09 13:56
Make'ом удобнее разбить тесты на части, так чтобы при компиляции небольшой части исходников запускалась компиляция и исполнение тестов только для этой части проекта.
------
Не совсем внятно что именно составляет проблему - студия позволяет перестроить отдельный проект и, после того как он перестроен, делать или не делать перестройку зависимых проектов. Да, чуток беднее, но никаких проблем, если нет завышенных требований к управлению зависимостями...
#11 
  scorpi_ прохожий20.04.09 14:57
NEW 20.04.09 14:57 
в ответ Murr 20.04.09 14:43
Чтобы воспроизвести то, что я делаю мейком, придётся делать по проекту на папку. Ибо если я компилирую какую-нибудь отдельную папку в глубине дерева исходников, то мейк дергает соответствующую папку в дереве тестов.
#12 
Simple Nothing is f*cked20.04.09 15:31
Simple
NEW 20.04.09 15:31 
в ответ scorpi_ 20.04.09 13:56
Если файлы проектов генерируются cmake, то вполне удобно. Я очень рад, что тогда вас послушал и остановился на нем :)
В ответ на:
Надо сказать, что в последнее время я работал с gcc и make, так что мои рассуждения имели несколько теоретический характер

А код в чем писал?
#13 
  scorpi_ прохожий20.04.09 15:35
NEW 20.04.09 15:35 
в ответ Simple 20.04.09 15:31
В ответ на:
А код в чем писал?

В студии. Make-проект можно вполне удобно вписать в студию, только дебажить нельзя. Надо бы debug-engine для gdb написать...
#14 
  scorpi_ прохожий20.04.09 15:44
NEW 20.04.09 15:44 
в ответ Simple 20.04.09 15:31
В ответ на:
Я очень рад, что тогда вас послушал и остановился на нем :)

А тестируешь чем?
#15 
Simple Nothing is f*cked20.04.09 15:50
Simple
NEW 20.04.09 15:50 
в ответ scorpi_ 20.04.09 15:44
UnitTest++.
Правда, мне щас не до тестов: успеть бы разгрести до очередного релиза.
#16 
Программист постоялец22.04.09 12:14
NEW 22.04.09 12:14 
в ответ krys 19.04.09 21:12
В ответ на:
Вопрос в догонку?
Как тестировать приватные функции класса?

Открой для себя friend. http://www.cyberguru.ru/programming/cpp/cpp-language-straustrup3-page14.html
#17