2015-10-27 5 views
1
#include "gtest/gtest.h" 

TEST(BattleUnitTest, CountryReturnsProperName) { 
    EXPECT_EQ(1, 1); 
} 

int main(int argc, char* argv[]) { 
    testing::InitGoogleTest(&argc, argv); 
    return RUN_ALL_TESTS(); 
} 

Я не могу заставить Google работать. Я запустил менеджер пакетов Nuget, чтобы получить gtest. Он продолжает давать мне эти ошибки:Не удается получить тест Google для работы

Severity Code Description Project File Line 
Error LNK2019 unresolved external symbol "bool __cdecl testing::internal::IsTrue(bool)" ([email protected]@[email protected]@[email protected]) referenced in function "public: void __thiscall testing::internal::scoped_ptr<class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> > >::reset(class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> > *)" ([email protected][email protected][email protected][email protected]@[email protected]@[email protected]@[email protected]@[email protected]@@[email protected]@@[email protected][email protected]@[email protected]@[email protected]@[email protected]@[email protected]@@Z) Assignment1_Battle E:\C++\Projects\Assignment1_Battle\Assignment1_Battle\BattleUnitTest.obj 1 

.

Severity Code Description Project File Line 
Error LNK2019 unresolved external symbol "public: __thiscall testing::Message::Message(void)" ([email protected]@@[email protected]) referenced in function "private: virtual void __thiscall BattleUnitTest_CountryReturnsProperName_Test::TestBody(void)" ([email protected][email protected]@EAEXXZ) Assignment1_Battle E:\C++\Projects\Assignment1_Battle\Assignment1_Battle\BattleUnitTest.obj 1 

.

Severity Code Description Project File Line 
Error LNK2019 unresolved external symbol "class testing::AssertionResult __cdecl testing::internal::EqFailure(char const *,char const *,class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> > const &,class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> > const &,bool)" ([email protected]@[email protected]@[email protected]@[email protected][email protected]@[email protected]@[email protected]@[email protected]@[email protected]@[email protected]) referenced in function "class testing::AssertionResult __cdecl testing::internal::CmpHelperEQ<int,int>(char const *,char const *,int const &,int const &)" ([email protected]@[email protected]@@[email protected]@[email protected]) Assignment1_Battle E:\C++\Projects\Assignment1_Battle\Assignment1_Battle\BattleUnitTest.obj 1 

Я могу опубликовать все ошибки, но почти все они имеют отношение к LNK2019. Кто-нибудь знает, как исправить эти ошибки?

+0

Как я помню, вам нужно добавить два * .lib-файла в поле ввода раздела ссылок. –

+0

Вы получаете ошибки компоновщика, поэтому, вероятно, вам нужно включить библиотеку 'gtest' в ваш проект. Кажется, что вы включили только путь для компилятора для поиска файлов заголовков. –

ответ

0

Похоже, вы должны выполнить дополнительную конфигурацию своего тестового проекта. В принципе, вы должны сделать два шага: 1. Добавьте имя библиотеки gtest к вашим свойствам проекта (Свойства проекта -> Свойства конфигурации-> Линкер-> Вход). Имейте в виду, что вам, вероятно, нужно добавить эту вещь для конфигураций Debug и Release, а имена библиотек - разные (это gtest.lib для Release и gtestd.lib для Debug, разница - «d» в конце имени раньше точка). 2. Добавьте путь к библиотеке gtest к вашим свойствам проекта (Свойства проекта-> Свойства конфигурации-> Каталоги VC++-> Библиотечные каталоги). Это также должно быть сделано отдельно для конфигураций Debug и Release, поскольку каталоги также отличаются.

Если что-то не так, этот article может быть действительно полезен. Он содержит полный сценарий настройки gtest для проекта в Visual Studio без использования Nuget. Просто имейте в виду, что Nuget в основном настраивает уже скомпилированную версию gtest для подпапки «package» вашего проекта/решения.

0

У меня была эта проблема, но не было ничего плохого в настройках компоновщика. Я в конечном итоге отследил его до этого поста PrintTo link issue:

Это было вызвано установкой несовместимости/Zc: wchar_t. I не упоминал в предыдущем посте, что я сделал этот пример как проект приложения Qt Console Application (с дополнением Qt 1.1.9). По-видимому, для параметра wchar_t установлено значение «нет» с шаблоном проекта , в то время как для проекта проекта Google Mock установлено значение «да» на по умолчанию. Когда я перекомпилировал Google Mock с настройкой «Нет» , проблема компоновщика исчезла.

Когда я изменил настройку «Обработать WChar_t As Built in Type» на «Yes/Zc: wchar_t», сработала сборка.

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