哪位高人给写个gtest带基类的基本例子
//这是为了捕捉内存泄漏#define _CRTDBG_MAP_ALLOC#include #include #include #include class MyTestBase : public testing::Test{public: int value; //这个变量用于演示怎么在每个case前设置它 virtual void SetUp() { //这个函数在每个case执行前被调用 value = 100; } virtual void TearDown() { //这个函数在每个case执行后被调用 value = 50; }};TEST_F(MyTestBase, Test1){ EXPECT_EQ( 1, 2 ); //期望相等,失败时还会继续往下走 ASSERT_EQ( 1, 2 ); //断言相等,失败时不继续往下了 ASSERT_TRUE( true ); //因为上边一句,这里不会被执行了}TEST_F(MyTestBase, Test2){ ASSERT_EQ( 100, value ); //断言value==100,就是在SetUp时被设置的 value = 999;}TEST_F(MyTestBase, Test3){ ASSERT_EQ( 100, value ); //确定上边的999没影响到这}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();}
Linux平台如何编译使用Google test写的单元测试?
(请参考readme文件) Step1.编译gtest-all.cc和gtest_main.cc文件g++ -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.将step1生成的gtest-all.o和gtest_main.o打包成静态库libgtest.aar -rv libgtest.a gtest-all.o gtest_main.o Step3.编译要测试的代码(假设文件名为sample.cpp)g++ -I${GTEST_DIR}/include -c sample.cpp Step4.编译单元测试的代码(假设文件名为test.cpp)g++ -I${GTEST_DIR}/include -c test.cpp Step5.与libgtest.a或其他需要的库链接、生成可执行程序g++ -I${GTEST_DIR}/include test.o sample.o libgtest.a -o test 其他的库,如pthread库。简单版本all: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 实际上,其中将gtest-all.o和gtest_main.o压缩为libgtest.a库,可以省去,直接使用.o文件,如下。all: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正式版本# 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 $@$^代表依赖项,$@代表目标。