CTest
一、初识CTest
CTest是CMake集成的一个测试工具,在使用CMakeLists.txt文件编译工程的时候,CTest会自动configure、build、test和展现测试结果
CTest有两个模式:
- 模式一: 使用CMake configure 和 build工程,在CMakeLists.txt文件中,使用特殊的命令取创建tests。CTest用来执行那些测试
- 模式二: 使用CTest来执行一个script(这个script的语法必须和CMakeLists.txt相同),去控制整个程序的输出结果=
二、使用方法
目前我们在工程中这样构建单元测试
project
|--------include
|
|--------src
|
|-----------test
| |---CMakeLists.txt
|
|--------CMakeLists.txt
1. 在外面的CMakeLists.txt中我们这样写
cmake_minimum_required(VERSION 2.8)
project(test)
....
add_subdirectory(test)
enable_testing()
add_test(NAME mytest COMMAND Test)
2. 在test/CMakeLists.txt中写你的测试需要的即可(可以如下面那样写)
三、完整的简单测试工程
include
//sqr.h #ifndef SQR_H_
#define SQR_H_ double sqr(double); #endif
src
//sqr.cpp
#include "sqr.h"
double sqr(double x) {
return x * x;
}
//main.cpp
int main()
{
return ;
}
test
//test.cpp
#include "sqr.h"
#define BOOST_TEST_MODULE SqrTests
#include <boost/test/unit_test.hpp> BOOST_AUTO_TEST_CASE(FailTest)
{
BOOST_CHECK_EQUAL(, sqr());
} BOOST_AUTO_TEST_CASE(PassTest)
{
BOOST_CHECK_EQUAL(, sqr());
} //CMakeLists.txt
find_package(Boost COMPONENTS system filesystem unit_test_framework REQUIRED) include_directories(include ${Boost_INCLUDE_DIRS}/boost) add_definitions(-DBOOST_TEST_DYN_LINK -g)
add_executable(Test test.cpp) target_link_libraries(Test sqr ${Boost_FILESYSTEM_LIBRARY}
${Boost_SYSTEM_LIBRARY}
${Boost_UNIT_TEST_FRAMEWORK_LIBRARY}) message(WARNING ${Boost_FILESYSTEM_LIBRARY})
message(WARNING ${Boost_SYSTEM_LIBRARY})
message(WARNING ${Boost_UNIT_TEST_FRAMEWORK_LIBRARY})
CMakeLists.txt
cmake_minimum_required(VERSION 2.8)
project(test) include_directories(include)
add_library(sqr STATIC src/sqr.cpp) add_executable(demo src/main.cpp)
target_link_libraries(demo sqr) add_subdirectory(test)
enable_testing()
add_test(NAME mytest COMMAND Test)
CTest的更多相关文章
- 明显调用的表达式前的括号必须具有(指针)函数类型 编译器错误 C2064
看到“明显调用的表达式前的括号必须具有(指针)函数类型”这句时我才发现我的语文水平有多烂,怎么看都看不懂,折腾了半天才知道是哪里出了问题. 举个简单的例子 class CTest { void (CT ...
- GNU Radio Radar Toolbox
GNU Radio Radar Toolbox Install guide Change to any folder in your home directory and enter followin ...
- java基础知识(十一)java反射机制(上)
java.lang.Class类详解 java Class类详解 一.class类 Class类是java语言定义的特定类的实现,在java中每个类都有一个相应的Class对象,以便java程序运行时 ...
- 值得推荐的C/C++框架和库
值得推荐的C/C++框架和库 [本文系外部转贴,原文地址:http://coolshell.info/c/c++/2014/12/13/c-open-project.htm]留作存档 下次造轮子前先看 ...
- [转]C/C++ 程序员必须收藏的资源大全
from: https://github.com/jobbole/awesome-cpp-cn C++ 资源大全中文版 我想很多程序员应该记得 GitHub 上有一个 Awesome – XXX 系列 ...
- Visual Studio高级调试技巧
1. 设置软件断点,运行到目标位置启动调试器 方法①:使用汇编指令(注:x64 c++不支持嵌入汇编) _asm 方法②:编译器提供的方法 __debugbreak(); 方法③:使用windows ...
- C++ 类对象和 指针的区别
C++ 类对象和 指针的区别 C++ 类对象和 指针的区别 转自:http://blog.csdn.net/ym19860303/article/details/8557746 指针的情况 class ...
- Red Hat5下源码安装mysql5.6过程记录
1.安装cmake包 [root@edu soft]# tar -xzf cmake-.tar.Z [root@edu soft]# cd cmake- [root@edu cmake-]# ./co ...
- CSS基础篇之选择符2
属性选择符: 选择符 版本 描述 E[att] CSS2 选择具有att属性的E元素. E[att="val"] CSS2 选择具有att属性且属性值等于val的E元素. E[at ...
随机推荐
- Bugtags 那些事儿
- 中文系统下,UTF-8编码文本文件读取导致的错误
一.UTF-8编码文件读取导致的错误 有个txt文件,里面内容为: aaa bbb ccc 以UTF-8编码方式打开txt文件,顺序读取,将里面的值放到一个hashset中,并判断aaa是否在在has ...
- sql server 与oracle数据互导的一种思路--sql server链接服务器
思路:通过在sql server数据库中添加链接服务器,可以远程查询oracle数据库的表环境准备,安装sql server数据库,并安装好oracle驱动,在配置好tnsname文件中配置好orac ...
- C# 文件压缩与解压(ZIP格式)
在企业开发过程中经常会遇到文件的压缩与解压,虽然网上很多流行的压缩文件格式都是RAR的,但是由于RAR不是一个开放的标准,因此ZIP成了更多人的选择.如果你不想自己开发的话可以选择开源的项目,比如Sh ...
- List<Object>和List<String>
下面的代码在JAVA中是不可以的: import java.util.*; public class Test { public static void main(String[] args) { L ...
- python正则表达式介绍
点击打开链接 1. 正则表达式基础 1.1. 简单介绍 正则表达式并不是Python的一部分.正则表达式是用于处理字符串的强大工具,拥有自己独特的语法以及一个独立的处理引擎,效率上可能不如str自带的 ...
- 使用spring的邮件发送功能
使用spring提供的MailSender和JavaMailSender类. 1.邮件对象类 package cn.luxh.app.mail; import java.util.List; impo ...
- java——操作文件
Java文件操作,共实现了文件复制(单个文件和多层目录文件),文件移动(单个文件和多层目录文件),文件删除(单个文件和多层目录文件),文件压缩 (单个文件),文件解压(单个文件),文件分割(将一个大文 ...
- 将 node.js 的数据保存到 mongo 数据库中
Mongo 数据库 安装 首先到 Mongo 的官方网站下载安装程序:http://www.mongodb.org/,我下载的文件名为:mongodb-win32-x86_64-2008plus-2. ...
- Android开发-API指南-<manifest>
<manifest> 英文原文:http://developer.android.com/guide/topics/manifest/manifest-element.html 采集(更新 ...