ZKX's LAB

写单元测试总结

2021-04-08知识10

开发需要写单元测试吗? 网上看到有个吐槽ThoughtWorks面试的帖子,说因为单元测试写的不好所以被拒。而我目前所在的单位,是没有…

如何用googletest写单元测试 googletest是一个用来写C++单元测试的框架,它是跨平台的,可应用在windows、linux、Mac等OS平台上。下面,我来说明如何使用最新的1.6版本gtest写自己的单元测试。本文包括以下几部分:1、获取并编译googletest(以下简称为gtest);2、如何编写单元测试用例;3、如何执行单元测试。4、google test内部是如何执行我们的单元测试用例的。1.获取并编译gtestgtest试图跨平台,理论上,它就应该提供多个版本的binary包。但事实上,gtest只提供源码和相应平台的编译方式,这是为什么呢?google的解释是,我们在编译出gtest时,有些独特的工程很可能希望在编译时加许多flag,把编译的过程下放给用户,可以让用户更灵活的处理。这个仁者见仁吧,反正也是免费的BSD权限。目前gtest提供的是1.6.0版本,我们看看与以往版本1.5.0的区别:[cpp]view plaincopyChanges for 1.6.0:New feature:ADD_FAILURE_AT()for reporting a test failure at thegiven source location-useful for writing testing utilities.Bug fixes and implementation clean-ups.Potentially incompatible changes:disables the harmful 'make install'command in autotools.就是最下面一行,make 。

如何用googletest写单元测试首先,要有一个main函数,函数内容非常简单:include\"gtest/gtest.hint main(int argc,char*argv){testing:InitGoogleTest(&argc,argv);Runs all tests using Google Test.return RUN_ALL_TESTS();}InitGoogleTest会解析参数。RUN_ALL_TESTS会把整个工程里的TEST和TEST_F这些函数全部作为测试用例执行一遍。执行时,假设我们编译出的可执行文件叫unittest,那么直接执行./unittest就会输出结果到屏幕,例如:[=]Running 4 tests from 1 test case.[-]Global test environment set-up.[-]4 tests from CHashTableTest[RUN]CHashTableTest.hashfunc[OK]CHashTableTest.hashfunc(0 ms)[RUN]CHashTableTest.addget[OK]CHashTableTest.addget(0 ms)[RUN]CHashTableTest.add2gettestCHashTable.cpp:79:FailureValue of:getHe->;m_pNext=NULLActual:trueExpected:false[FAILED]CHashTableTest.add2get(1 ms)[RUN]CHashTableTest.delget[OK]CHashTableTest.delget(0 ms)[-]4 tests from CHashTableTest(1 ms total)[-]Global test environment tear-down[=]4 tests from 1 test case ran.(1 ms total)[PASSED]3 tests。.

#测试喇叭单元#怎么写单元测试#初一单元测试#单元测试框架#it单元测试

qrcode
访问手机版