# testngpp2
**Repository Path**: sinojelly/testngpp2
## Basic Information
- **Project Name**: testngpp2
- **Description**: A powerful and easy-to-use C/C++ test framework based on testngpp with lots of simplifications.
- **Primary Language**: Unknown
- **License**: LGPL-3.0
- **Default Branch**: master
- **Homepage**: None
- **GVP Project**: No
## Statistics
- **Stars**: 0
- **Forks**: 1
- **Created**: 2021-04-16
- **Last Updated**: 2024-06-04
## Categories & Tags
**Categories**: Uncategorized
**Tags**: None
## README
testngpp2 --- A C/C++ Testing Framework
-------------------------------------
https://github.com/sinojelly/testngpp2
https://gitee.com/sinojelly/testngpp2
testngpp2是基于testngpp演进来的一个轻量级、运行环境简单的测试框架,支持把所有TestSuite编译到一个可执行文件。
testngpp和testngpp2相比,测试用例写法,用例管理方式都是保持一致的,只是改变了编译运行方式,简化了编译运行环境:
| 特性 | testngpp | testngpp2 | 改进成testngpp2的原因 |
| -- | -- | -- | -- |
| 编译 | 每个测试.h文件内容
编译成一个so | 可以任意多个测试.h文件内容
编译到一个可执行文件 | 更好的使用并行编译加速 |
| 运行 | 测试工具是可执行文件,
动态加载listener和
各个TestSuite的so | 直接运行可执行文件即可 |①可执行文件运行可靠性更高;
②对不同平台的动态库加载机制依赖较少,
更容易跨平台(比如支持Android+Termux环境);
③运行命令简单,可以不加任何命令行参数;
④静态链接testngpp2.a,不是使用可执行文件或so,
相同架构机器不同编译器版本可能复用 |
相比testngpp,目前精简去掉了一些功能:
- Sandbox运行机制
- 文件句柄等资源泄露检查,它与平台紧密相关(独立的内存泄露检查是保留的)
- xml文件输出(该功能目前未使用,所以没有测试)
## testngpp2 features
|OS|Compiler|Base function①| Memory leak check | Parameterized test |
|----|---- |---- |---- |---- |
|Linux|GCC |Yes |Yes | Yes |
|Win10|MinGW②|Yes |No | Yes |
|Win10|VS2019|Yes |Yes | Yes |
|Android③|Clang|Yes |Yes | Yes |
注:
- ① Base function包括:用例编写(包括tag,用例依赖)、用例管理(包括运行时过滤fixture/tag)等。
- ② MinGW可靠性较差,比如.a rename fail, .cpp的函数实现无法链接等,不适合开发大的项目。
- ③ Android+Termux,也可以使用VHEditor。
## testngpp2基本概念
testngpp2用例编译运行流程如下:

注:
- 可执行文件名 Tests 用户可自定义。
**几个主要的概念:**
- **TestSuite**: 一个测试.h文件,就是一个TestSuite。
- **TestFixture**: 测试用例中用 FIXTURE(TestFixtureName)声明的一个用例集合, 它组织了若干相关的用例,这些用例可以共享一些成员变量。一个TestSuite中可以有多个TestFixture。
- **TestCase**: TestFixture中的每个用例都是一个TestCase。
- **SETUP,TEARDOWN**: 每个TestFixture可以有 SETUP, TEARDOWN方法,在每个用例运行前会执行SETUP,每个用例运行结束执行TEARDOWN。
## testngpp2命令行
一般直接运行编译生成的可执行文件即可。
如果希望只运行部分测试用例,或者定制输出格式,则需要了解命令行参数。
testngpp2命令行说明:
```shell
Tests [--filter-fixtures ]...
[--filter-testcase ]...
[--filter-tags ]
[-o