Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > C/C++: Общие вопросы > Visual Studio, C++, UnitTests


Автор: artikov 18.10.2010, 10:07
Решил научится такой полезной вещи как юнит тесты. Использую библиотеку UnitTest++ (но это в принципе не важно).

Есть у меня проект программы:
MainProject:
  • main.cpp
  • foo1.cpp
  • foo1.h
  • foo2.cpp
  • foo2.h


чтоб прикрутить к нему тесты я создаю еще один проект:
TestProject:
  • runTests.cpp
  • foo1.cpp
  • foo1.h
  • foo2.cpp
  • foo2.h
  • foo1_test.cpp
  • foo2_test.cpp


в runTests.cpp:
Код

#include "UnitTest++.h"
int main()
{
    return UnitTest::RunAllTests();
}


в foo1_test.cpp, foo2_test.cpp - тесты:
Код

TEST(MyFirstTest)
{
    bla bla;
}


проблема в том, что когда мне надо добавить новые файлы в MainProject или изменить его настройки, те же самые изменения приходится делать с TestProject.
Можно ли как нибудь избежать того, чтоб одни и те же действия нужно было делать дважды?

Или может я делаю все совсем не так как надо? Тогда расскажите как делать правильно.

Автор: xvr 18.10.2010, 14:30
Поместите в TestProject не копии кодов (foo?.*), а их оригиналы (т.е. те же самые файлы, что и в MainProject). Тогда ничего в 2х местах править не придется

Автор: artikov 18.10.2010, 14:55
xvr, вы не правильно поняли, файлы foo?.* - общие. 
Проблема в том что если я хочу добавить новый файл foo3.cpp. Приходится в главном проекте жать Add New Item и затем в тестовом проекте - Add Exist Item -> foo3.cpp . То же самое с настройками проектов, если я хочу, например, подключить какую-нибудь библиотеку, то я должен прописать пути к h-файлам и lib-файлам в MainProject-е, и затем то же самое сделать для TestProject-a.

Автор: xvr 18.10.2010, 15:07
Цитата(artikov @  18.10.2010,  14:55 Найти цитируемый пост)
Проблема в том что если я хочу добавить новый файл foo3.cpp.
Понял, это немного другая проблема. Ее можно решить сделав из общих сорцов отдельный проект - статическую библиотеку, и поставить зависимости от нее обеим оригинальным проектам. Всю заботу по сборке и подключению библиотеки возмет на себя MSVC (у вас именно она, насколько я понял?)

Цитата(artikov @  18.10.2010,  14:55 Найти цитируемый пост)
То же самое с настройками проектов,
Это, увы, придется синхронизировать в обоих проектах. Либо вынести в настройки солюшена (вроде это как то можно, только не спрашивайте как - с этим сталкиваться не приходилось  smile )



Автор: maxim1000 18.10.2010, 22:55
настройки проекта можно вынести в файл vsprops (для 2010 - props) и подключить их к каждому проекту

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)