Это не задокументировано на веб-сайте, и у людей, похоже, возникают проблемы с настройкой фреймворка. Может ли кто-нибудь показать пошаговое введение для установки образца проекта?
Ответы:
То, что сказал Арлахарен, было в основном правильным, за исключением того, что он не упомянул ту часть, которая объясняет ваши ошибки компоновщика. Прежде всего, вам нужно создать свое приложение без CRT в качестве библиотеки времени выполнения. Вы всегда должны делать это в любом случае, поскольку это действительно упрощает распространение вашего приложения. Если вы этого не сделаете, то всем вашим пользователям понадобится установленная библиотека времени выполнения Visual C ++, а те, кто этого не сделает, будут жаловаться на загадочную пропажу DLL в их системе ... из-за дополнительных нескольких сотен килобайт, которые стоит связать. ЭЛТ статически, вы сэкономите себе много головной боли позже в поддержке (поверьте мне, я выучил это на собственном горьком опыте!).
В любом случае, чтобы сделать это, вы переходите к свойствам цели -> C / C ++ -> Генерация кода -> Библиотека времени выполнения, и она должна быть установлена как «Многопоточная» для вашей сборки выпуска и «Многопоточная отладка» для ваша отладочная сборка.
Поскольку GTEST библиотека построена таким же образом, вы должны убедиться , что вы связываете с правильной версией него , или же компоновщик будет тянуть в другой копии библиотеки времени выполнения, что ошибка вы видели (кстати, это не должно иметь значения, используете вы MFC или нет). Вам нужно создать gtest как в режиме отладки, так и в режиме выпуска и сохранить обе копии. Затем вы связываете gtest.lib / gtest_main.lib в сборке Release и gtestd.lib / gtest_maind.lib в сборке Debug.
Кроме того, вам необходимо убедиться, что ваше приложение указывает на каталог, в котором хранятся файлы заголовков gtest (в свойствах -> C / C ++ -> Общие -> Дополнительные каталоги включения), но если вы добрались до ошибки компоновщика, я предполагаю что вам уже удалось исправить эту часть, иначе вам придется сначала разобраться с гораздо большим количеством ошибок компилятора.
(Эти инструкции заставляют среду тестирования работать для конфигурации отладки. Применение того же процесса к конфигурации выпуска должно быть довольно тривиальным.)
Получите Google C ++ Testing Framework
C:\gtest
Создайте библиотеки Framework
C:\gtest\msvc\gtest.sln
в Visual StudioСоздайте и настройте свой тестовый проект
C:\gtest\include
C:\gtest\msvc\gtest\Debug
или C:\gtest\msvc\gtest-md\Debug
, в зависимости от расположения gtestd.libgtestd.lib
Проверка того, что все работает
main()
функцию.Вставьте следующий код:
#include "stdafx.h"
#include <iostream>
#include "gtest/gtest.h"
TEST(sample_test_case, sample_test)
{
EXPECT_EQ(1, 1);
}
int main(int argc, char** argv)
{
testing::InitGoogleTest(&argc, argv);
RUN_ALL_TESTS();
std::getchar(); // keep console window open until Return keystroke
}
Отладка> Начать отладку
Если все сработало, вы должны увидеть окно консоли и показать вам результаты модульного теста.
Я сделал видеоурок по настройке: http://www.youtube.com/watch?v=mzSzwQOmMRs
Создав gtest, я сделал вот что:
После этого я просто пишу свои тесты, используя TEST или TEST_F, в зависимости от ситуации, и компилирую их вместе с моей основной функцией:
int main(int argc, char** argv)
{
testing::InitGoogleTest(&argc, argv);
return RUN_ALL_TESTS();
}
gtest_main.lib
содержит main
функцию по умолчанию , поэтому вы, вероятно, не захотите включать ее, если main
явно написали свою собственную .
Если вы не хотите писать свой собственный main () для тестов, вы можете использовать функцию main (), определенную в gtest_main.lib, но тогда вы получите ошибки компоновщика «Точка входа должна быть определена» в VS2012. В вашем тестовом проекте установите ProjectProperties-> Linker-> System-> SubSystem на «Консоль», поскольку это заставит VS2012 искать точку входа с именем «main ()» и найдет ее в gtest_main.lib (при условии, что вы связали это правильно).
В Microsoft Visual Studio неправильно настроенный тип библиотеки времени выполнения вызывает ошибки связи.
VS 2005 (и 2008) по умолчанию использует многопоточную DLL или многопоточную отладочную DLL. Но библиотека Google Test по умолчанию использует многопоточную или многопоточную среду отладки.
Итак, выберите подходящий тип библиотеки времени выполнения для тестовой библиотеки Google. (в свойствах конфигурации -> генерация кода -> библиотека времени выполнения).