|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
|
Опции темы | Поиск в этой теме |
26.05.2016, 09:39 | #1 |
Регистрация: 26.05.2016
Сообщений: 6
|
Google test в Visual Studio 2013
Пытаюсь запустить пример sample1.cc из https://github.com/google/googletest...letest/samples и что-то как-то приуныл - не компилится. Делаю так:
1. Запускаю googletest/googletest/msvc/gtest.sln и компилирую. Появляются библиотеки gtestd.lib и gtest_maind.lib 2. Создаю новый Solution и в нём два проекта Sample и TestSample. 3. В проект Sample добавляю файлы sample1.cc, sample1.h и файл main.cpp из которого и вызываю функции из sample1.cc 4. В проект TestSample добавляю файл sample1_unittest.cc и в него функцию main из gtest_main.cc. Настройки проекта такие: Project Properties->Configuration Properties-> General -> Additional Include Directories указываю проект Sample, googletest, googletest\include Project Properties->Configuration Properties->Linker->General->Additional Library Directories указываю папку с библиотекой gtestd.lib Project Properties->Configuration Properties->Linker->Input->Additional Dependencies указываю gtestd.lib Компилирую TestSample получаю ошибки: error LNK2019: unresolved external symbol "int __cdecl Factorial(int)" (?Factorial@@YAHH@Z) referenced in function "private: virtual void __thiscall FactorialTest_Negative_Test::TestBo dy(void)" (?TestBody@FactorialTest_Negative_T est@@EAEXXZ) error LNK2019: unresolved external symbol "bool __cdecl IsPrime(int)" (?IsPrime@@YA_NH@Z) referenced in function "private: virtual void __thiscall IsPrimeTest_Negative_Test::TestBody (void)" (?TestBody@IsPrimeTest_Negative_Tes t@@EAEXXZ) error LNK1120: 2 unresolved externals Подскажите как делать правильно. Последний раз редактировалось Alex11223; 26.05.2016 в 10:00. |
26.05.2016, 10:03 | #2 |
Старожил
Регистрация: 12.01.2011
Сообщений: 19,500
|
Sample это что за проект? Обычно это делают в виде библиотеки, и подключают ее к проекту с тестами.
Например что-то типа такого https://github.com/fuatcoskun/GoogleTestVS2015
Ушел с форума, https://www.programmersforum.rocks, alex.pantec@gmail.com, https://github.com/AlexP11223
ЛС отключены Аларом. Последний раз редактировалось Alex11223; 26.05.2016 в 10:07. |
26.05.2016, 10:31 | #3 |
Старожил
Регистрация: 15.02.2010
Сообщений: 15,760
|
В TestSample добавьте линк на sample1.cc
|
26.05.2016, 11:34 | #4 |
Регистрация: 26.05.2016
Сообщений: 6
|
Sample это проект который подлежит тестированию.
TestSample это проет с тестами. В моём случае оба проекта были исполняемыми, т.е. .exe Спасибо за ссылку. Вообще хотелось бы обсудить именно встраивание тестирования в парадигму разработки. Если делать тестируемый прект в виде библиотеки, то при любом изменении кода нужно перекомпилировать всю библиотеку, а ведь она может компилироваться очень долго, ни о какой производительности в этом случае речи быть не может. Любой мало мальски сложный проект (Solution в Visual Studio) будет состоять из множества проектов. Нужно ли иметь один проект для тестирования или их должно быть много. При намерении покрыть тестами весь Solution получается, что весь код переедит в тестовый проект, что также скажется на времени компиляции. По идее правильным решением было бы тестировать исходный код, а не библиотеку и в этом случае исходные файлы из разных проектов из Solution нужно подключать к тестовому проекту, что может вызвать (наверное) проблеы с одинаковыми именами файлов, классов и функций. |
26.05.2016, 11:37 | #5 |
Старожил
Регистрация: 15.02.2010
Сообщений: 15,760
|
Вы мой пост читали? У вас в тестовом проект просто нет тел функции. Добавьте и все будет.
|
26.05.2016, 11:40 | #6 |
Регистрация: 26.05.2016
Сообщений: 6
|
|
26.05.2016, 11:51 | #7 |
Старожил
Регистрация: 15.02.2010
Сообщений: 15,760
|
Не, add - existing item
|
26.05.2016, 11:51 | #8 | |
Старожил
Регистрация: 12.01.2011
Сообщений: 19,500
|
Цитата:
Ушел с форума, https://www.programmersforum.rocks, alex.pantec@gmail.com, https://github.com/AlexP11223
ЛС отключены Аларом. |
|
26.05.2016, 12:08 | #9 |
Регистрация: 26.05.2016
Сообщений: 6
|
Спасибо, у меня конечно были подозрения.
Просто чтобы уточнить: Допустим у меня есть Solution и в нём много проектов. Я создаю проект для тестирования, добавляю gtestd.h, добавляю Additional Include Directories для каждого проекта подлежащего тестированию и самое главное - Добавляю все .cpp файлы всех проектов в проект для тестирования через add - existing item. А что делать если названия файлов из разных проектов совпадут или такого быть не должно? |
26.05.2016, 12:13 | #10 | |
Старожил
Регистрация: 15.02.2010
Сообщений: 15,760
|
Все не надо. Надо только то, что тестите и зависимые.
Цитата:
|
|
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Visual studio 2013 | MarineKing | Фриланс | 0 | 28.05.2015 16:26 |
C++ visual studio 2013 | mystafa23 | Общие вопросы C/C++ | 1 | 15.11.2014 21:07 |
C++ visual studio 2013 | mystafa23 | Общие вопросы C/C++ | 10 | 15.11.2014 20:02 |
C++ visual studio 2013 | mystafa23 | Общие вопросы C/C++ | 3 | 20.10.2014 07:16 |
Интерфейс приложений в стиле Office 2013, Visual Studio 2012/2013, Adobe CC | nnmserg | WPF, UWP, WinRT, XAML | 2 | 12.09.2014 12:41 |