在Windows上创建google test单元测试环境

0. 先决条件

Windows 上已安装 Cygwin,以便在Windows上编译运行C++代码。

1. 建立初始目录结构

E:\users\sharonmei1219 
-- gtestExample
   -- test
   -- Makefile

2. 准备测试文件,并编译

2.1 在test目录下新建一个空文件

E:\users\sharonmei1219 
-- gtestExample
   -- test
      -- testExample.cpp
   -- Makefile

2.2 修改Makefile

Makefile
TARGET_DIR:= obj
TEST_OBJ:= obj/testExample.o

$(TEST_OBJ): $(TARGET_DIR) test/testExample.cpp
     $(CXX) -c test/testExample.cpp -o $(TEST_OBJ)

$(TARGET_DIR):
     mkdir ./obj


2.3 验证,在gtestExample目录下执行make命令

3.1.2 执行make

>make

编译器报错: test/testExample.cpp:1:25: gtest/gtest.h: No such file or directory

3.2 安装google test

3.2.1  下载google test
下载 gtest-1.6.0.zip

3.2.2 在sharonmei1219下建立unittest目录

E:\users\sharonmei1219 
-- gtestExample
   -- test
   -- Makefile
-- unittest

3.2.3 解压 gtest-1.6.0.zip 

E:\users\sharonmei1219 
-- gtestExample
   -- test
   -- Makefile
-- unittest
   -- gtest-1.6.0

3.3 修改Makefile, 让编译器能找到google test的头文件

Makefile
GTEST_DIR:= ../unittest/gtest-1.6.0
CPPFLAGS += -I$(GTEST_DIR)/include

TARGET_DIR:= obj
TEST_OBJ:= obj/testExample.o

$(TEST_OBJ): $(TARGET_DIR) test/testExample.cpp
     $(CXX) -g $(CPPFLAGS) -c test/testExample.cpp -o $(TEST_OBJ)

$(TARGET_DIR):
     mkdir ./obj

3.4 验证

在3.1.2中的编译错误不见了。

4. 第一个测试

4.1 在测试文件中写第一个测试用例

test/testExample.cpp
#include "gtest/gtest.h"

TEST(TestExample, FirstTest){
     ASSERT_EQ(2, 1+3);
}

4.2 修改Makefile

Makefile
GTEST_DIR:= ../unittest/gtest-1.6.0
CPPFLAGS += -I$(GTEST_DIR)/include

TARGET_DIR:= obj
TEST_OBJ:= obj/testExample.o
TARGET:= obj/unittest.exe</span>

<span style="color:#ff0000;">$(TARGET): $(TEST_OBJ)
     $(CXX) $(TEST_OBJ) -o $(TARGET)

$(TEST_OBJ): $(TARGET_DIR) test/testExample.cpp
     $(CXX) -g $(CPPFLAGS) -c test/testExample.cpp -o $(TEST_OBJ)

$(TARGET_DIR):
     mkdir ./obj


4.3 编译

>make

编译器报错,很多的undefined reference to...,因为我们没有链接google test的库

4.4 链接google test

4.4.1 编译google test
在E:\users\sharonmei1219\unittest\gtest-1.6.0\make 目录中执行 make

>make

会生成如下文件:
gtest_main.a  gtest-all.o  sample1.o             sample1_unittest.o
gtest_main.o  Makefile     sample1_unittest.exe

4.4.2 打包

>mkdir ../lib
>ar -rf ../lib/libgtest.a gtest-all.o gtest_main.o

检查  E:\users\sharonmei1219\unittest\gtest-1.6.0\lib 中有 libgtest.a 生成

4.5 修改Makefile
回到 E:\users\sharonmei1219\gtestExample目录,修改Makefile

Makefile
GTEST_DIR:= ../unittest/gtest-1.6.0
CPPFLAGS += -I$(GTEST_DIR)/include
LD_LIBRARIES = -L $(GTEST_DIR)/lib -lgtest

TARGET_DIR:= obj
TEST_OBJ:= obj/testExample.o
TARGET:= obj/unittest.exe

$(TARGET): $(TEST_OBJ)
     $(CXX) $(TEST_OBJ) $(LD_LIBRARIES) -o $(TARGET)

$(TEST_OBJ): $(TARGET_DIR) test/testExample.cpp
     $(CXX) -g $(CPPFLAGS) -c test/testExample.cpp -o $(TEST_OBJ)

$(TARGET_DIR):
     mkdir ./obj


4.6 执行make

>make

检查obj文件中生成的unittest.exe

4.7 跑单元测试

>cd obj
>./unittest.exe

检查结果,有一个测试用例失败,如我们所愿

Running main() from gtest_main.cc
[==========] Running 1 test from 1 test case.
[----------] Global test environment set-up.
[----------] 1 test from TestExample
[ RUN      ] TestExample.FirstTest
test/testExample.cpp:4: Failure
Value of: 1+3
  Actual: 4
Expected: 2
[  FAILED  ] TestExample.FirstTest (0 ms)
[----------] 1 test from TestExample (0 ms total)

[----------] Global test environment tear-down
[==========] 1 test from 1 test case ran. (0 ms total)
[  PASSED  ] 0 tests.
[  FAILED  ] 1 test, listed below:
[  FAILED  ] TestExample.FirstTest

 1 FAILED TEST

4.8 修改测试用例,让测试通过
#include "gtest/gtest.h"

TEST(TestExample, FirstTest){
     ASSERT_EQ(4, 1+3);
}
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值