2

У меня есть консольное приложение на C++ (VS 2013), и я хочу его протестировать (используя Google Test).VC++ VS 2013, как использовать (тестовые) классы из другого проекта?

Я создал отдельный проект и добавил GTEST включают пути и т.п. (для exanple с помощью этого учебника http://www.bogotobogo.com/cplusplus/google_unit_test_gtest.php) и простые тесты, как это произведение тонкой:

TEST(MyTests, myTest1) 
{ 
    EXPECT_EQ(2+2, 4); 
} 

Но как использовать классы из основного проекта? Если я просто добавлю проект dir, чтобы включить пути, то я могу использовать только код «только для заголовка», но для классов с реализацией в .cpp я получаю ошибку unresolved external symbol.

Есть ли лучший способ, чем перемещение всех классов в библиотеку, чтобы проверить это?

+0

_ «Есть ли лучший способ, чем перемещение всех классов в библиотеку» _ Нет, вам нужно создать библиотеку для тестируемых классов. –

+0

Включите необходимые исходные файлы в тестовый проект. При желании переместите файлы тестовых проектов в ту же папку, где протестированы файлы проекта (так что включение/исключение файлов было бы проще). Это отлично подходит для небольших проектов, но быстро станет беспорядком в большом многопроектном решении. – Drop

+0

И вместо того, чтобы «переместить все классы в библиотеку», подумайте об этом как «перемещение« главной »функции в исполняемый проект». Все станет легче. ;) – Drop

ответ

1

Сделайте свой проект библиотекой. И сделать небольшой исполняемый файл для запуска. Это решает многие проблемы. Многие проекты используют эту стратегию. И один из них - Хром. Другим примером является интерпретатор языка Perl. Ваша проектная библиотека будет легко связываться с тестами.

+0

Да, я закончил тем, что использовал этот подход, похоже, что он самый легкий доступный. Хотя я думаю, что это не так просто, как должно быть, как на других языках. :( – AlexP11223

Смежные вопросы