UnitTest++ 学习笔记

来源:互联网 发布:linux 重启ssh 编辑:程序博客网 时间:2024/05/29 18:34

简介

最近没事 就看了下 unittestpp 的源码, 记录下一点东西和一个好的博客 .
笔记

自己做的UnitTestpp 的XML 图:

  1. 主要架构
    架构
  2. Reporter 部分的细致分类

Reporter

关于如何使用 unittestpp 的一个好博客 :

http://www.ultimatepp.org/srcdocUnitTest++UnitTestpp$de-de.html

################################
更新。

下载地址

Latest (HEAD)

#Via git:git clone https://github.com/unittest-cpp/unittest-cpp#Via svn:svn checkout https://github.com/unittest-cpp/unittest-cpp/trunk unittest-cpp#Latest release (v1.5.0)#Via git:git clone https://github.com/unittest-cpp/unittest-cppcd unittest-cppgit checkout v1.5.0#Via svn:svn checkout https://github.com/unittest-cpp/unittest-cpp/tags/v1.5.0 unittest-cpp

常用宏

CHECK &CHECK_EQUAL

  • 最基本的测试宏 , 出错会打印详细的出错信息 。
  • 出错不会中断。

TEST & TEST_FIXTURE

  • TEST 注册一组测试
TEST(A_Name){//...}
    • A_Name需要(在同一个命名空间中)保持唯一。
    • 被包被的代码组成一组测试 , 注册进入测试队列。
  • TEST_FIXTURE 基于一个类注册一组测试
TEST_FIXTURE(fixture ,A_Name){//...}
    • fixture 需要是struct 或者 class 名字。
    • 这个宏必须在cpp中
    • 被包被的代码有fixture的全部权限 (其实继承了这个类)。
    • fixture必须有默认构造函数。

SUIT 定义一个命名空间。

SUIT{TEST(A_Name1){//...}TEST_FIXTURE(fixture ,A_Name){//...}}

最简单头文件和测试接口

#include "UnitTest++/UnitTestpp.hpp"UnitTest::RunAllTest();

代码实例

test.h

class TestUnitTest {    public:        TestUnitTest(int i, int j) : a(i) , b(j) {}        TestUnitTest() : a(1) , b(2) {}        int GetAddResult() {return a+b;}        int GetSubResult() {return a-b;}    private:        int a, b;};

test.cpp

#include "UnitTest++/UnitTestPP.h"#include "test.h"SUITE(TestSuite){    TEST(SimilarlyNamedTestsInDifferentSuitesWork)    {        CHECK( 1 == 1);        CHECK_EQUAL( 0 , 1);    }    TEST_FIXTURE(TestUnitTest, SimilarlyNamedFixtureTestsInDifferentSuitesWork)    {        CHECK(TestUnitTest(1,2).GetAddResult() ==3);        CHECK(GetAddResult() == 3);    }}

main.cpp

#include "UnitTest++/UnitTestPP.h"int main(int, char const *[]){    return UnitTest::RunAllTests();}

输出

这里写图片描述

1 0
原创粉丝点击