UnitTest++ 学习笔记

简介

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

自己做的UnitTestpp 的XML 图:

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

Reporter

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

http://www.ultimatepp.org/srcdoc UnitTest++ 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-cpp
cd unittest-cpp
git 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();
}

输出

这里写图片描述

使用 python+unittest+HTMLTestRunner 配置 HTML 测试报告的步骤如下: 1. 安装 HTMLTestRunner 模块 可以使用以下命令安装 HTMLTestRunner 模块: ``` pip install HTMLTestRunner ``` 2. 编写测试用例 使用 unittest 编写测试用例,例如: ```python import unittest class TestStringMethods(unittest.TestCase): def test_upper(self): self.assertEqual('foo'.upper(), 'FOO') def test_isupper(self): self.assertTrue('FOO'.isupper()) self.assertFalse('Foo'.isupper()) def test_split(self): s = 'hello world' self.assertEqual(s.split(), ['hello', 'world']) # check that s.split fails when the separator is not a string with self.assertRaises(TypeError): s.split(2) if __name__ == '__main__': unittest.main() ``` 3. 编写 HTML 测试报告生成代码 编写 HTML 测试报告生成代码,例如: ```python import unittest import HTMLTestRunner class TestStringMethods(unittest.TestCase): def test_upper(self): self.assertEqual('foo'.upper(), 'FOO') def test_isupper(self): self.assertTrue('FOO'.isupper()) self.assertFalse('Foo'.isupper()) def test_split(self): s = 'hello world' self.assertEqual(s.split(), ['hello', 'world']) # check that s.split fails when the separator is not a string with self.assertRaises(TypeError): s.split(2) if __name__ == '__main__': suite = unittest.TestSuite() suite.addTest(TestStringMethods('test_upper')) suite.addTest(TestStringMethods('test_isupper')) suite.addTest(TestStringMethods('test_split')) filename = 'test_report.html' fp = open(filename, 'wb') runner = HTMLTestRunner.HTMLTestRunner( stream=fp, title='Test Report', description='This is a report of the test.' ) runner.run(suite) fp.close() ``` 4. 运行测试用例并生成 HTML 测试报告 运行测试用例并生成 HTML 测试报告,例如: ``` python test_report.py ``` 在当前目录下会生成一个名为 `test_report.html` 的 HTML 测试报告文件。打开该文件,即可查看测试结果。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值