zoukankan      html  css  js  c++  java
  • Linux下Google Test (GTest)测试环境搭建步骤

    1.下载GTEST

    下载链接为:https://code.google.com/p/googletest/downloads/list

    目前GTEST的最新版本为gtest-1.7.0.zip,因此我们在本文中将以这个版本作为例子讲解。

    2.认识文件夹

    下载并解压之后,就可以看到gooletest(gtest-1.7.0)文件夹了,里面的内容如下图所示:

    这么多文件看起来很麻烦。其实,GTEST提供了对于多个不同平台的支持,例如msvc文件夹是用在微软Visual Studio中,xcode文件夹是用于Mac Xcode,codegrear文件夹是用于Borland C++ Builder,在Linux环境中,我们用的内容就是make文件夹了。

    3.清除不需要的文件

    前一步中我们已经讲到,很多文件是为了支持不同平台的,为了保持程序的简洁,避免混淆试听,我们在这一步把所有不需要的文件全部删除,只保留我们需要的。

    只剩下了四个文件夹,看上去好多了。其实打开make文件夹,你会发现里面只有一个Makefile文件。查看Makefile文件内容,得知这是系统给出的编译samples文件夹中的第一个sample的命令。但是打开sample文件夹,又看到里面一大坨源文件。在本入门教程中,我们先不考虑那些复杂的例子。因此,打开samples文件夹,开始删文件,删到只剩下如图所示的三个文件为止。

    4.改写Makefile文件

    到make文件夹下,通过命令行执行 $ make && ./sample1_unittest 命令,可以看到测试的执行结果。

    wj@wj-Inspiron-5437:~/gtest/googletest/make$ make && ./sample1_unittest

    g++ -isystem ../include -g -Wall -Wextra -pthread -c ../samples/sample1.cc
    g++ -isystem ../include -g -Wall -Wextra -pthread -c ../samples/sample1_unittest.cc
    g++ -isystem ../include -I.. -g -Wall -Wextra -pthread -c
                ../src/gtest-all.cc
    g++ -isystem ../include -I.. -g -Wall -Wextra -pthread -c
                ../src/gtest_main.cc
    ar rv gtest_main.a gtest-all.o gtest_main.o
    ar: creating gtest_main.a
    a - gtest-all.o
    a - gtest_main.o
    g++ -isystem ../include -g -Wall -Wextra -pthread -lpthread sample1.o sample1_unittest.o gtest_main.a -o sample1_unittest
    Running main() from gtest_main.cc
    [==========] Running 6 tests from 2 test cases.
    [----------] Global test environment set-up.
    [----------] 3 tests from FactorialTest
    [ RUN      ] FactorialTest.Negative
    [       OK ] FactorialTest.Negative (0 ms)
    [ RUN      ] FactorialTest.Zero
    [       OK ] FactorialTest.Zero (0 ms)
    [ RUN      ] FactorialTest.Positive
    [       OK ] FactorialTest.Positive (0 ms)
    [----------] 3 tests from FactorialTest (0 ms total)

    [----------] 3 tests from IsPrimeTest
    [ RUN      ] IsPrimeTest.Negative
    [       OK ] IsPrimeTest.Negative (0 ms)
    [ RUN      ] IsPrimeTest.Trivial
    [       OK ] IsPrimeTest.Trivial (0 ms)
    [ RUN      ] IsPrimeTest.Positive
    [       OK ] IsPrimeTest.Positive (0 ms)
    [----------] 3 tests from IsPrimeTest (0 ms total)

    [----------] Global test environment tear-down
    [==========] 6 tests from 2 test cases ran. (0 ms total)
    [  PASSED  ] 6 tests.



    不过如果打开Makefile查看一下,就会发现这个makefile只适用于编译sample1,如果我再增加一个被测的源文件呢?又要重新写makefile,太麻烦了。于是,在这一步,我们改写一下Makefile。

     上一步我们讲到,现在只剩下4个文件夹(include,make,samples,src),既然make里面的唯一一个文件也要被改写,那也没必要留这个文件夹了。于是,你要做的第一件事情就是,把make文件夹,连同里面的Makefile文件全部删除……然后,进入samples文件夹,自己创建一个文件,名为Makefile,如图所示

    然后,打开Makefile文件,写入以下内容。这个新的Makefile是由刚才被我们删除的Makefile改写而来的,如果你好奇的话可以比较一下它们之间的差别,里面涉及到一些makefile的语法和函数,如果不熟的话,你可能需要花费几分钟查一下资料去了解他们。

    注意下图中改写的Makefile第32行,我们编译的是后缀名为cpp的文件,而原来给的例子却以cc结尾。因此,你还要做一件事情,就是把sample1.cc的文件名改为sample1.cpp,把sample1_unittest.cc的文件名改为sample1_unittest.cpp,就大功告成了。

    GTEST_DIR = ..
    USER_DIR = .
    CPPFLAGS += -isystem $(GTEST_DIR)/include
    CXXFLAGS += -g -Wall -Wextra -pthread
    TESTS = run_test
    GTEST_HEADERS = $(GTEST_DIR)/include/gtest/*.h 
                    $(GTEST_DIR)/include/gtest/internal/*.h
    FILES =$(foreach d,$(USER_DIR),$(wildcard $(d)/*.cpp))
    OBJS =$(patsubst %.cpp,%.o,$(FILES))


    all : $(TESTS) clean : rm -f $(TESTS) gtest_main.a *.o

    .PHONY :clean
    GTEST_SRCS_ = $(GTEST_DIR)/src/*.cc $(GTEST_DIR)/src/*.h $(GTEST_HEADERS) gtest-all.o : $(GTEST_SRCS_) $(CXX) $(CPPFLAGS) -I$(GTEST_DIR) $(CXXFLAGS) -c $(GTEST_DIR)/src/gtest-all.cc gtest_main.o : $(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) $@ $^

    %.o :%.cpp
    $(CXX) $(CPPFLAGS) $(CXXFLAGS) -c $< -o $@

    $(TESTS) : $(OBJS) gtest_main.a
    $(CXX) $(CPPFLAGS) $(CXXFLAGS) -lpthread $^ -o $@

    现在我们的文件夹有三个(include,src,samples),我们自己被测的程序放在samples文件夹中。这个文件夹的名字看着也比较不爽,你可以把它改为mycode或者testcode,然后GTEST根目录的文件夹名称gtest-1.7.0也可以改为mygtest之类,。如图所示:

     

    现在,进入命令行进行编译执行操作: $ make && ./run_test,就可以看到结果了,如图所示:

    6.添加自己的测试函数

    参考http://www.linuxidc.com/Linux/2015-05/116894.htm

  • 相关阅读:
    Ubuntu
    「日记」抑郁症
    [Ubuntu] 运行.AppImage格式文件
    [Database]Oracle数据库中concat和||的区别
    [Database] 不知道表名和字段查找值=1234的数据.
    [Windows]卸载Office 2016密钥
    [经验]怎么删除“通过QQ/TIM发送到”右键菜单
    Venom- Eminem
    粪便中的粪臭素稀释了以后会变成花香味
    #宽带选择# V2EX讨论
  • 原文地址:https://www.cnblogs.com/Jessica-jie/p/6705067.html
Copyright © 2011-2022 走看看