zoukankan      html  css  js  c++  java
  • CppUTest的简单用法

    最近学习如何进行单元测试,于是研究了一下CppUTest的用法,虽然这工具经常被推荐,但奇怪的是网上资料缺比较少,可能是因为太简单了的原因吧,先记录下来给自己看。

    1.下载CppUTest

    2.Linux常用安装三板斧

    ./configure --prefix=目录

    make

    make install

    3.使用

    CppUTest上有一个如何开始的说明

    先编写一个cpp文件

     1 /*注意,这个头文件必须包含,不然编译就报错,比较坑的是官网并没说要添加这个*/
     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通过,就可以直接执行了

    最后看到输出“fail me”就哦了。


    基本用法的说明

    简单的CppUTest分成两个部分

    TEST_GROUP(FirstTestGroup) { };

    TEST(FirstTestGroup,FirstTest) { }

    TEST_GROUP的内部定义自己测试中需要用到的变量和一些自己的函数(变量和函数只有定义在这个里面,属于这一组的测试才能使用这些变量和函数),而且在TEST_GROUP中还可以继承两个CppUTest的函数

    void setup(){}//这个函数中对变量进行初始化

    void teardown(){}//对一些变量进行销毁

    TEST部分中就填入我们想要做的测试用例

    CppUTest提供了很多的宏,如CHECK(bool),LONGS_EQUAL(excepted,actual)…等等宏,就行一些检测,而不需要去关心C++语言的类的那些问题,所以CppUTest也可以用于C语言。

    目前我能看到的用法就这么多,以后有了新的用法再扩展。

  • 相关阅读:
    MongoDB下,启动服务时,出现“服务没有响应控制功能”解决方法
    如何安装mongodb.msi
    jade和ejs两者的特点
    Node.js中的http.request方法的使用说明
    34丨关于Linux网络,你必须知道这些(下)
    33 | 关于 Linux 网络,你必须知道这些(上)
    osi 七层模型 通俗易懂
    32 | 浅谈容器网络
    Linux 三剑客之SED行天下
    js 基本类型与引用类型的区别
  • 原文地址:https://www.cnblogs.com/cxjchen/p/3081118.html
Copyright © 2011-2022 走看看