最近學(xué)習(xí)如何進行單元測試,于是研究了一下CppUTest的用法,雖然這工具經(jīng)常被推薦,但奇怪的是網(wǎng)上資料缺比較少,可能是因為太簡單了的原因吧,先記錄下來給自己看。
1.下載CppUTest
2.Linux常用安裝三板斧
./configure --prefix=目錄
make
make check
3.使用
CppUTest上有一個如何開始的說明
先編寫一個cpp文件
1 /*注意,這個頭文件必須包含,不然編譯就報錯,比較坑的是官網(wǎng)并沒說要添加這個*/ 2 #include "CppUTest/UtestMacros.h" 3 4 TEST_GROUP(FirstTestGroup) 5 { 6 }; 7 8 TEST(FirstTestGroup,FirstTest) 9 { 10 FAIL("fail me!"); 11 }
然后再編寫一個cpp文件
1 /*這幾個頭文件最好都包含了,反正以后也要用*/ 2 3 #include "CppUTest/CommandLineTestRunner.h" 4 #include "CppUTest/TestPlugin.h" 5 #include "CppUTest/TestRegistry.h" 6 #include "CppUTestExt/MockSupportPlugin.h" 7 8 int main(int ac,char** av) 9 { 10 return CommandLineTestRunner::RunAllTests(ac, av); 11 }
最后再編寫一個Makefile文件
1 CC=gcc
2 CXX=g++ 3 4 #自己定義這個路徑 5 CPPUTEST_HOME=/root/usr/cpputest-3.4 6 7 FLAGS= -c 8 9 CPPFLAGS += -I$(CPPUTEST_HOME)/include 10 11 CFLAGS += -include $(CPPUTEST_HOME)/include/CppUTest/MemoryLeakDetectorNewMacros.h 12 CXXFLAGS += -include $(CPPUTEST_HOME)/include/CppUTest/MemoryLeakDetectorMallocMacros.h 13 14 LD_LIBRARIES = -L$(CPPUTEST_HOME)/lib -lCppUTest -lCppUTestExt 15 16 #自己定義最后程序的名稱 17 TARGET=alltests 18 19 #自己定義有哪些文件 20 OBJECTS=AllTest.o cpputest.o 21 SOURCES=AllTest.cpp cpputest.cpp 22 23 $(TARGET):$(OBJECTS) 24 $(CXX) $^ $(LD_LIBRARIES) -o $@ 25 26 27 .cpp.o: 28 $(CXX) $(FLAGS) $(CPPFLAGS) $(CXXFLAGS) $< -o $@ 29 30 .c.o: 31 $(CXX) $(FLAGS) $(CPPFLAGS) $(CFLAGS) $< -o $@ 32 33 clean: 34 rm *.o $(TARGET)
然后make通過,就可以直接執(zhí)行了
最后看到輸出“fail me”就哦了。
基本用法的說明
簡單的CppUTest分成兩個部分
TEST_GROUP(FirstTestGroup) { };
TEST(FirstTestGroup,FirstTest) { }
TEST_GROUP的內(nèi)部定義自己測試中需要用到的變量和一些自己的函數(shù)(變量和函數(shù)只有定義在這個里面,屬于這一組的測試才能使用這些變量和函數(shù)),而且在TEST_GROUP中還可以繼承兩個CppUTest的函數(shù)
void setup(){}//這個函數(shù)中對變量進行初始化
void teardown(){}//對一些變量進行銷毀
TEST部分中就填入我們想要做的測試用例
CppUTest提供了很多的宏,如CHECK(bool),LONGS_EQUAL(excepted,actual)…等等宏,就行一些檢測,而不需要去關(guān)心C++語言的類的那些問題,所以CppUTest也可以用于C語言。
目前我能看到的用法就這么多,以后有了新的用法再擴展。