如何编译google test的例子 哪位高人给写个gtest带基类的基本例子

Linux\u5e73\u53f0\u5982\u4f55\u7f16\u8bd1\u4f7f\u7528Google test\u5199\u7684\u5355\u5143\u6d4b\u8bd5\uff1f

(\u8bf7\u53c2\u8003readme\u6587\u4ef6) Step1.\u7f16\u8bd1gtest-all.cc\u548cgtest_main.cc\u6587\u4ef6g++ -I${GTEST_DIR}/include -I${GTEST_DIR} -c ${GTEST_DIR}/src/gtest-all.ccg++ -I${GTEST_DIR}/include -I${GTEST_DIR} -c ${GTEST_DIR}/src/gtest_main.cc Step2.\u5c06step1\u751f\u6210\u7684gtest-all.o\u548cgtest_main.o\u6253\u5305\u6210\u9759\u6001\u5e93libgtest.aar -rv libgtest.a gtest-all.o gtest_main.o Step3.\u7f16\u8bd1\u8981\u6d4b\u8bd5\u7684\u4ee3\u7801(\u5047\u8bbe\u6587\u4ef6\u540d\u4e3asample.cpp)g++ -I${GTEST_DIR}/include -c sample.cpp Step4.\u7f16\u8bd1\u5355\u5143\u6d4b\u8bd5\u7684\u4ee3\u7801(\u5047\u8bbe\u6587\u4ef6\u540d\u4e3atest.cpp)g++ -I${GTEST_DIR}/include -c test.cpp Step5.\u4e0elibgtest.a\u6216\u5176\u4ed6\u9700\u8981\u7684\u5e93\u94fe\u63a5\u3001\u751f\u6210\u53ef\u6267\u884c\u7a0b\u5e8fg++ -I${GTEST_DIR}/include test.o sample.o libgtest.a -o test \u5176\u4ed6\u7684\u5e93\uff0c\u5982pthread\u5e93\u3002\u7b80\u5355\u7248\u672call:g++ -I/usr/src/gtest-1.5.0/include -I/usr/src/gtest-1.5.0 -g -c /usr/src/gtest-1.5.0/src/gtest-all.ccg++ -I/usr/src/gtest-1.5.0/include -I/usr/src/gtest-1.5.0 -g -c /usr/src/gtest-1.5.0/src/gtest_main.ccar -rv libgtest.a gtest-all.o gtest_main.og++ -I/usr/src/gtest-1.5.0/include -g -c sample.cppg++ -I/usr/src/gtest-1.5.0/include -g -c test.cppg++ -I/usr/src/gtest-1.5.0/include -lpthread test.o sample.o libgtest.a -g -o testclean:rm test libgtest.a *.o \u5b9e\u9645\u4e0a\uff0c\u5176\u4e2d\u5c06gtest-all.o\u548cgtest_main.o\u538b\u7f29\u4e3alibgtest.a\u5e93\uff0c\u53ef\u4ee5\u7701\u53bb\uff0c\u76f4\u63a5\u4f7f\u7528.o\u6587\u4ef6\uff0c\u5982\u4e0b\u3002all:g++ -I/usr/src/gtest-1.5.0/include -I/usr/src/gtest-1.5.0 -g -c /usr/src/gtest-1.5.0/src/gtest-all.ccg++ -I/usr/src/gtest-1.5.0/include -I/usr/src/gtest-1.5.0 -g -c /usr/src/gtest-1.5.0/src/gtest_main.ccg++ -I/usr/src/gtest-1.5.0/include -g -c sample.cppg++ -I/usr/src/gtest-1.5.0/include -g -c test.cppg++ -I/usr/src/gtest-1.5.0/include -lpthread test.o sample.o gtest-all.o gtest_main.o -g -o testclean:rm test *.o\u6b63\u5f0f\u7248\u672c# Google Test directoryGTEST_DIR = /usr/src/gtest-1.5.0 # Flags passed to the preprocessor.CPPFLAGS += -I$(GTEST_DIR)/include # Flags passed to the C++ compiler.CXXFLAGS += -g -Wall -Wextra # All Google Test headers. Usually you shouldn't change this definition.GTEST_HEADERS = $(GTEST_DIR)/include/gtest/*.h $(GTEST_DIR)/include/gtest/internal/*.h # All Google Test sourcesGTEST_SRCS_ = $(GTEST_DIR)/src/*.cc $(GTEST_DIR)/src/*.h $(GTEST_HEADERS) # All tests produced by this Makefile. Remember to add new tests you created to the list.TESTS = test all : $(TESTS) clean :rm -f $(TESTS) gtest.a gtest_main.a *.o gtest-all.o : $(GTEST_DIR)/src/gtest-all.cc # $(GTEST_SRCS_)$(CXX) $(CPPFLAGS) -I$(GTEST_DIR) $(CXXFLAGS) -c $(GTEST_DIR)/src/gtest-all.cc gtest_main.o : $(GTEST_DIR)/src/gtest_main.cc # $(GTEST_SRCS_)$(CXX) $(CPPFLAGS) -I$(GTEST_DIR) $(CXXFLAGS) -c $(GTEST_DIR)/src/gtest_main.cc gtest_main.a : gtest-all.o gtest_main.o$(AR) $(ARFLAGS) $@ $^ sample.o : sample.cpp sample.h $(GTEST_HEADERS)$(CXX) $(CPPFLAGS) $(CXXFLAGS) -c sample.cpp test.o : test.cpp sample.h $(GTEST_HEADERS)$(CXX) $(CPPFLAGS) $(CXXFLAGS) -c test.cpp test : sample.o test.o gtest_main.a$(CXX) $(CPPFLAGS) $(CXXFLAGS) -lpthread $^ -o $@$^\u4ee3\u8868\u4f9d\u8d56\u9879\uff0c$@\u4ee3\u8868\u76ee\u6807\u3002

//\u8fd9\u662f\u4e3a\u4e86\u6355\u6349\u5185\u5b58\u6cc4\u6f0f
#define _CRTDBG_MAP_ALLOC
#include
#include

#include
#include

class MyTestBase : public testing::Test
{
public:
int value; //\u8fd9\u4e2a\u53d8\u91cf\u7528\u4e8e\u6f14\u793a\u600e\u4e48\u5728\u6bcf\u4e2acase\u524d\u8bbe\u7f6e\u5b83

virtual void SetUp()
{
//\u8fd9\u4e2a\u51fd\u6570\u5728\u6bcf\u4e2acase\u6267\u884c\u524d\u88ab\u8c03\u7528
value = 100;
}

virtual void TearDown()
{
//\u8fd9\u4e2a\u51fd\u6570\u5728\u6bcf\u4e2acase\u6267\u884c\u540e\u88ab\u8c03\u7528
value = 50;
}
};

TEST_F(MyTestBase, Test1)
{
EXPECT_EQ( 1, 2 ); //\u671f\u671b\u76f8\u7b49\uff0c\u5931\u8d25\u65f6\u8fd8\u4f1a\u7ee7\u7eed\u5f80\u4e0b\u8d70
ASSERT_EQ( 1, 2 ); //\u65ad\u8a00\u76f8\u7b49\uff0c\u5931\u8d25\u65f6\u4e0d\u7ee7\u7eed\u5f80\u4e0b\u4e86

ASSERT_TRUE( true ); //\u56e0\u4e3a\u4e0a\u8fb9\u4e00\u53e5\uff0c\u8fd9\u91cc\u4e0d\u4f1a\u88ab\u6267\u884c\u4e86
}

TEST_F(MyTestBase, Test2)
{
ASSERT_EQ( 100, value ); //\u65ad\u8a00value==100\uff0c\u5c31\u662f\u5728SetUp\u65f6\u88ab\u8bbe\u7f6e\u7684
value = 999;
}

TEST_F(MyTestBase, Test3)
{
ASSERT_EQ( 100, value ); //\u786e\u5b9a\u4e0a\u8fb9\u7684999\u6ca1\u5f71\u54cd\u5230\u8fd9
}

int _tmain(int argc, _TCHAR* argv[])
{
_CrtSetDbgFlag ( _CRTDBG_ALLOC_MEM_DF | _CRTDBG_LEAK_CHECK_DF );

testing::InitGoogleTest(&argc, argv);
testing::InitGoogleMock(&argc, argv);

return RUN_ALL_TESTS();
}

Cmake generates native build scripts. 先建立mybuild目录
# cd /usr/src/gtest-1.5.0
# mddir mybuild
# cd mybuild
(1) only generate gtest_unittest

# cmake /usr/src/gtest-1.5.0 //generate Makefile
# make //generate executable file gtest_unittest
(2) generate gtest_unittest and all samples
//generate Makefile with Google Test's samples to be compiled
# cmake -Dbuild_gtest_samples=ON /usr/src/gtest-1.5.0

//generate executable files gtest_unittest, sample1_unittest, sample2_unittest, ...
# make
Reference
http://code.google.com/p/googletest
../readme

Appendix. 使用CMake编译gtest_unittest和samples

//生成Makefile文件
root@yu29:/usr/src/gtest-1.5.0/mybuild# cmake -Dbuild_gtest_samples=ON /usr/src/gtest-1.5.0
-- The CXX compiler identification is GNU
-- The C compiler identification is GNU
-- Check for working CXX compiler: /usr/bin/c++
-- Check for working CXX compiler: /usr/bin/c++ -- works
-- Detecting CXX compiler ABI info
-- Detecting CXX compiler ABI info - done
-- Check for working C compiler: /usr/bin/gcc
-- Check for working C compiler: /usr/bin/gcc -- works
-- Detecting C compiler ABI info
-- Detecting C compiler ABI info - done
-- Looking for include files CMAKE_HAVE_PTHREAD_H
-- Looking for include files CMAKE_HAVE_PTHREAD_H - found
-- Looking for pthread_create in pthreads
-- Looking for pthread_create in pthreads - not found
-- Looking for pthread_create in pthread
-- Looking for pthread_create in pthread - found
-- Found Threads: TRUE
-- Found PythonInterp: /usr/bin/python2.6
-- Configuring done
-- Generating done
-- Build files have been written to: /usr/src/gtest-1.5.0/mybuild
root@yu29:/usr/src/gtest-1.5.0/mybuild# ls
CMakeCache.txt CMakeFiles cmake_install.cmake CTestTestfile.cmake Makefile
//编译
root@yu29:/usr/src/gtest-1.5.0/mybuild# make
Scanning dependencies of target gtest
[ 5%] Building CXX object CMakeFiles/gtest.dir/src/gtest-all.cc.o
Linking CXX static library libgtest.a
[ 5%] Built target gtest
Scanning dependencies of target gtest_main
[ 11%] Building CXX object CMakeFiles/gtest_main.dir/src/gtest_main.cc.o
...
//生成了所有samples的可执行程序
root@yu29:/usr/src/gtest-1.5.0/mybuild# ls
CMakeCache.txt libgtest.a sample2_unittest sample7_unittest
CMakeFiles libgtest_main.a sample3_unittest sample8_unittest
cmake_install.cmake Makefile sample4_unittest sample9_unittest
CTestTestfile.cmake sample10_unittest sample5_unittest
gtest_unittest sample1_unittest sample6_unittest
//看看sample2的执行结果
root@yu29:/usr/src/gtest-1.5.0/mybuild# ./sample2_unittest
Running main() from gtest_main.cc
[==========] Running 4 tests from 1 test case.
[----------] Global test environment set-up.
[----------] 4 tests from MyString
[ RUN ] MyString.DefaultConstructor
[ OK ] MyString.DefaultConstructor (0 ms)
[ RUN ] MyString.ConstructorFromCString
[ OK ] MyString.ConstructorFromCString (0 ms)
[ RUN ] MyString.CopyConstructor
[ OK ] MyString.CopyConstructor (0 ms)
[ RUN ] MyString.Set
[ OK ] MyString.Set (0 ms)
[----------] 4 tests from MyString (0 ms total)

[----------] Global test environment tear-down
[==========] 4 tests from 1 test case ran. (1 ms total)
[ PASSED ] 4 tests.
//gtest_unittest的执行结果较长,此处不再显示。

扩展阅读:google play下载 ... play store download ... goodplay应用商店 ... 中英文自动翻译器 ... chrome安卓下载入口 ... goolge play store官网 ... chrome free download ... goog账号注册官网 ... 谷歌 ...

本站交流只代表网友个人观点,与本站立场无关
欢迎反馈与建议,请联系电邮
2024© 车视网