安装好gtest后,编写第一个測试案例test_main.cpp

#include <iostream>
#include <gtest/gtest.h> using namespace std; int Foo(int a,int b)
{
return a+b;
} TEST(FooTest, ZeroEqual)
{
ASSERT_EQ(0,0);
} TEST(FooTest, HandleNoneZeroInput)
{
EXPECT_EQ(12,Foo(4, 10));
EXPECT_EQ(6, Foo(30, 18));
} int main(int argc, char* argv[])
{
testing::InitGoogleTest(&argc, argv);
return RUN_ALL_TESTS();
}

依照gtest的介绍MakeFile文件为

TARGET=test_main

all:
gtest-config --min-version=1.0 || echo "Insufficient Google Test version."
g++ $(gtest-config --cppflags --cxxflags) -o $(TARGET).o -c test_main.cpp
g++ $(gtest-config --ldflags --libs) -o $(TARGET) $(TARGET).o
clean:
rm -rf *.o $(TARGET)

可是编译的时候,出现错误

cxy-/home/chenxueyou/gtest$ make
gtest-config --min-version=1.0 || echo "Insufficient Google Test version."
g++ -o test_main.o -c test_main.cpp
g++ -o test_main test_main.o
test_main.o: In function `FooTest_ZeroEqual_Test::TestBody()':
test_main.cpp:(.text+0x9e): undefined reference to `testing::internal::AssertHelper::AssertHelper(testing::TestPartResult::Type, char const*, int, char const*)'
...

省略了部分错误信息。看到了undefined reference,编译通过,可是链接失败。能够推測是没有找到相应的库。再细致看实际运行时打印的命令为

   g++  -o test_main.o -c test_main.cpp
g++ -o test_main test_main.o

非常显然,没有引入gtest的头文件,也没有载入gtest相应的库。

运行命令

>echo $(gtest-config --cppflags --cxxflags)

和

echo $(gtest-config --ldflags --libs)

能够得到gtest配置的头文件路径和库文件路径。

cxy-/home/chenxueyou/gtest$ echo $(gtest-config --cppflags --cxxflags)
-I/usr/include -pthread
cxy-/home/chenxueyou/gtest$ echo $(gtest-config --ldflags --libs)
-L/usr/lib64 -lgtest -pthread

而在我们的Makefile中运行时上面两个命令的结果为空。

所以改动Makefile,手动指定头文件路径和库文件路径,Makefile为

TARGET=test_main

all:
gtest-config --min-version=1.0 || echo "Insufficient Google Test version."
g++ -I/usr/include -pthread -o $(TARGET).o -c test_main.cpp
g++ -L/usr/lib64 -lgtest -pthread -o $(TARGET) $(TARGET).o
clean:
rm -rf *.o $(TARGET)

这样,我们的第一个gtest測试文件就能编译通过了。

总结

1.Makefile实际运行的命令可能与预想的命令不一样。要细致查看。

2.gtest通过头文件和库的方式引入project。要指定其头文件和库文件的位置

3.gtest-config命令可以帮助我们找到相应的路径


欢迎光临我的站点----蝴蝶忽然的博客园----人既无名的专栏。 

假设阅读本文过程中有不论什么问题,请

t=qm_mailme&email=Jx4WFx8eEx4XE2dWVglESEo" style="background:none transparent scroll repeat 0% 0%">联系作者,转载请注明出处!

版权声明:本文博客原创文章,博客,未经同意,不得转载。

gtest写了第一个测试用例错误和结算过程的更多相关文章

  1. JMeter自学笔记3-创建自己的第一个测试用例

    一.写在前面的话: 上篇我们已经认识了JMeter的图形界面,大家应该都是很懵的.那么这篇,我们将学习使用JMeter创建第一个属于自己测试用例. 二.创建自己的第一个测试用例: 1.新建一个Thre ...

  2. Web自动化框架LazyUI使用手册(2)--先跑起来再说(第一个测试用例-百度搜索)

    作者:cryanimal QQ:164166060 上篇文章中,简要介绍了LazyUI框架,本文便来演示,如何从无到有快速搭建基于lazyUI的工程,并成功运行第一个测试用例. 本文以百度搜索为例,选 ...

  3. 万事开头难,用HTML写的第一个界面,收获颇多

        很开心跟了叶老师学习和做项目,基础不好,前期他会帮你安排好学习路线和计划.前期没有项目做,叶老师先让我先学习jQuery,给我推荐了一些网站,叫我一边学习,一边写博客.其实很早就有想写博客的想 ...

  4. 使用springboot写一个简单的测试用例

    使用springboot写一个简单的测试用例 目录结构 pom <?xml version="1.0" encoding="UTF-8"?> < ...

  5. Python初学者随笔(一)_ 用Python写的第一个游戏“猜数字”

    如标题所写,这篇随笔主要记录下学习Python过程中用Python写的第一个游戏--"猜数字"_跟着"小甲鱼"学Python,链接: https://b23.t ...

  6. stm32 向W25Q256FLASH中通过 FATFS文件系统写入数据 写多了之后出现错误,之前存储的全都找不到了

    stm32 像W25Q256FLASH中通过  FATFS文件系统写入数据  写多了之后出现错误,之前存储的全都找不到了 http://firebbs.cn/thread-23490-1-1.html ...

  7. 一次Oracle宕机切换后产生ORA错误的处理过程

    问题背景 机房意外断电后Oracle主服务器启动失败,Oracle备机接管 为了安全,管理员对于数据库做expdp的逻辑备份.但备份时发现AttributeInstance表备份失败,提示ORA-01 ...

  8. Robot Framework入门学习2 创建第一个测试用例

    本文章部分内容引自以下网址,感谢作者的辛苦分享 http://www.cnblogs.com/fnng/p/3871712.html http://blog.csdn.net/tulituqi/art ...

  9. pytest执行用例:明明只写了5个测试用例, 怎么收集到33个!?

    pytest收集测试用例的顺序: 同一个项目中搜索所有以test_开头的测试文件.test_开头的测试类.test_开头的测试函数 执行测试用例的顺序: 是按照先数据(0~9)>再字母(a~z) ...

随机推荐

  1. Hadoop文件的基本操作 分类: A1_HADOOP 2014-12-05 11:36 392人阅读 评论(0) 收藏

    Hadoop提供了大量的API对文件系统中的文件进行操作,主要包括: (1)读取文件 (2)写文件 (3)读取文件属性 (4)列出文件 (5)删除文件 1、读取文件 以下示例中,将hdfs中的一个文件 ...

  2. [Angular Unit Testing] Testing Component methods

    import {ComponentFixture, TestBed} from '@angular/core/testing'; import {BrowserDynamicTestingModule ...

  3. Kinect舒适区范围--UE4 的Blueprint测试范例

    本文章由cartzhang编写,转载请注明出处. 所有权利保留. 文章链接: http://blog.csdn.net/cartzhang/article/details/44748475 作者:ca ...

  4. Springmvc+Shiro实战

    原文链接:http://blog.csdn.net/qq_37936542/article/details/79010449 springmvc+shiro实现系统粗细粒度的权限管理步骤: 1:表格设 ...

  5. C++对象模型——对象成员的效率 (Object Member Efficiency)(第三章)

    3.5 对象成员的效率 (Object Mem ber Efficiency) 以下某个測试,目的在測试聚合(aggregation).封装(encapsulation),以及继承(Inheritan ...

  6. 【转载】FormsAuthenticationTicket 对象

    1.使用Forms验证存储用户自定义信息 Forms验证在内部的机制为把用户数据加密后保存在一个基于cookie的票据FormsAuthenticationTicket中,因为是经过特殊加密的,所以应 ...

  7. Git 常用命令总结(精问)

    Git 常用命令总结(精问) 一.总结 一句话总结:下次尝试做任何git的操作之前,把这个精看精问一遍,绝对会有意向不到的收获. 二.Git 常用命令总结 1.git常用命令 安装及配置: Ubunt ...

  8. NSUserDefaults:通常用来保存一些小巧的数据,如用户的用户名密码,或者是用户的使用习惯,如是否自动打开背景音乐等。

    1,NSUserDefaults通常用来保存一些小巧的数据,如用户的用户名密码,或者是用户的使用习惯,如是否自动打开背景音乐等. 2,使用它的原因就是:代码简短,使用方便 3,使用方法如下: -(vo ...

  9. UIPasteboard粘贴板:UIlabel开启复制粘贴功能(一)

    首先,因为苹果只放出来了 UITextView,UITextField,webView三个控件的剪贴板,所以一般控件的剪贴板都被禁用了,因此,我们首先要做的就是把这属性放出来,其实就是实现三个简单的方 ...

  10. 【b603】作业调度方案

    Time Limit: 1 second Memory Limit: 50 MB [问题描述] 我们现在要利用m台机器加工n个工件,每个工件都有m道工序,每道工序都在不同的指定的机器上完成.每个工件的 ...