I'm trying to get my first ever unit test with Google Test framework + Visual Studio 2013.However I'm hitting the below error and can't understand why.
1>------ Build started: Project: FirstGoogleTest, Configuration: Debug Win32 ------
2>------ Build started: Project: googleTest, Configuration: Debug Win32 ------
1> MyMultiplier.cpp
2> gtest_main.cc
1> main.cpp
1> Generating Code...
2> gtest-all.cc
1> FirstGoogleTest.vcxproj -> D:_Vault\Workspaces\UnitTestLearning\FirstGoogleTest\Debug\FirstGoogleTest.exe
2> Generating Code...
2> googleTest.vcxproj -> D:_Vault\Workspaces\UnitTestLearning\FirstGoogleTest\Debug\googleTest.lib
3>------ Build started: Project: MyMultiplier_UnitLevelTest, Configuration: Debug Win32 ------
3> MyMultiplier_UnitLevelTest.cpp
3>MyMultiplier_UnitLevelTest.obj : error LNK2019: unresolved external symbol "public: unsigned int __thiscall
MyMultiplier::multiply(unsigned int,unsigned int)" (?multiply@MyMultiplier@@QAEIII@Z) referenced in function "private: virtual void __thiscall MyMultiplier_multiplyNormalSmallValues_Test::TestBody(void)" (?TestBody@MyMultiplier_multiplyNormalSmallValues_Test@@EAEXXZ)
3>D:_Vault\Workspaces\UnitTestLearning\FirstGoogleTest\Debug\MyMultiplier_UnitLevelTest.exe : fatal error LNK1120: 1 unresolved externals
========== Build: 2 succeeded, 1 failed, 0 up-to-date, 0 skipped ==========
The solution structures is as follow:
https://www.dropbox.com/s/0cu8eqr7pz3ajaz/Untitled.png
The ULT project's "References" projects include "googleTest" and "FirstGoogleTest". here is the "MyMultiplier_UnitLevelTest.cpp"
#include "gtest/gtest.h" // access test macro
#include "MyMultiplier.h" // testee
#include <iostream>
#include <string>
TEST(MyMultiplier, multiplyNormalSmallValues){
MyMultiplier m;
std::string name("MyMultiplier_ULT");
unsigned int a = 5;
unsigned int b = 10;
unsigned int answer = m.multiply(a, b/*, name*/);
ASSERT_EQ(a * b, answer);
}
the "multiply" function's declaration in MyMultiplier.h:
class MyMultiplier{
public:
unsigned int multiply(unsigned int a, unsigned int b/*, std::string& name*/);
};
the signature matches and also the header file is included. why the ult project can't find the symbol?
the entire solution can be downloaded here: https://www.dropbox.com/sh/vc89o5ep139wkuk/AAA8Z76q6iAkP25zTmu9bR3ia