CppUTest框架的配置及使用

CppUTest框架的配置及使用

  • 配置
    • makeFile的配置
  • 使用
    • 被测项目源代码
    • 单元测试代码
    • CppUTest框架中定义测试组TEST_GROUP及属于TEST_GROUP测试组的测试用例
      • CppUTest框架中定义测试组及测试用例的宏
      • 测试组中的前置、后置方法
      • 断言宏Assertion
      • 使用示例
        • 示例一
        • 示例二

CppUTest框架的使用方法待验证后补入本文。

以virtual studio 2019 中的项目结构为例,如下图所示。
CppUTest框架的配置及使用_第1张图片

配置

makeFile的配置

待验证后补入此博客和此博客。

使用

被测项目源代码

置于productionCodeLib中(其外部依赖项为开发项目中使依赖的其他项目代码)。

单元测试代码

置于AllTests中(其外部依赖项为开发项目中的各头文件——所有方法的声明)。
补入此博客。

CppUTest框架中定义测试组TEST_GROUP及属于TEST_GROUP测试组的测试用例

CppUTest框架中定义测试组及测试用例的宏

  • TEST_GROUP(group) - 声明一个名为group测试用例Test组. 这也会创建一个被别的库所需要的链接.
  • TEST_GROUP_BASE(group, base) - 和TEST_GROUP一样, 只是使用了和UTest不一样的基类
  • TEST(group, name) - 定义一个属于group测试组、名为name的测试用例Test
  • IMPORT_TEST_GROUP(group) - 从库中导入一个指定的组. 需在main函数中调用.
  • IGNORE_TEST(group, name) - 关闭执行一个属于group测试组、名为name的测试用例Test

TEST_SETUP() - 在TEST_GROUP中声明了一个空的setup方法 - 声明一个 void setup()也是同样的效果。
TEST_TEARDOWN() - 在TEST_GROUP中声明了一个空的teardown方法。
详见后面的小章节“使用示例”

测试组中的前置、后置方法

每个TEST_GROUP都可以包含一个 setup和teardown方法。setup() 和teardown() 使用于测试组中的每一个测试用例

	void setup()		//设置本测试组的前置准备工作
    {
    }

    void teardown()		//设置本测试组的后置收尾工作
    {
    }

断言宏Assertion

  • CHECK(boolean condition) - 检查布尔结果——condition==True则成功,反之失败。
  • CHECK_TEXT(boolean condition, text) - condition==True则成功; 反之失败,并且失败时输出text信息
  • CHECK_TRUE(boolean condition) - 检查是否正确
  • CHECK_FALSE(boolean condition) - 检查是否错误
     
  • CHECK_EQUAL(expected, actual) - 检查等号左后是否相等. 如果一个类重载了==操作符,那么就可以比较同属这个类的两个实例.
  • CHECK_THROWS(expected_exception, expression) - 抛出的异常 expected_exception==exception则成功; 反之失败
  • STRCMP_EQUAL(expected, actual) - 用strcmp比较两个字符串是否相等——字符串 expected==actual则成功; 反之失败
  • LONGS_EQUAL(expected, actual) - 比较两个数,数字 expected==actual则成功; 反之失败
  • BYTES_EQUAL(expected, actual) - 比较两个【8比特数】——数字 expected==actual则成功; 反之失败 (数字是 8bit 宽)
  • POINTERS_EQUAL(expected, actual) - 比较两个 const void *指针——指针 expected==actual则成功; 反之失败
  • DOUBLES_EQUAL(expected, actual, tolerance) - 在一定公差范围内比较两个浮点数——double型 expected和actual在误差范围内(tolerance)相等则成功; 反之失败
     
  • FAIL(text) - 表示测试用例失败,并返回text信息

使用示例

验证并补入此博客的2.2~2.5的内容。

示例一
#include "CppUTest/TestHarness.h"

extern "C"
{
#include "Example.h"
}

TEST_GROUP(Example)		//测试组命名为Example
{
    void setup()		//设置本测试组中所有测试用例的前置准备工作
    {
    }

    void teardown()		//设置本测试组中所有测试用例的后置收尾工作
    {
    }
	
	TEST_SETUP() {		//等同于setup(),待确认
        
    };

	TEST_TEARDOWN() {	//等同于teardown(),待确认
        
    };
};

TEST(Example, test1)	//向本测试组Example中添加 名为“test1”的测试用例
{
	LONGS_EQUAL(1, example());//框架中的宏???
}
示例二

Example Main

#include "UnitTestHarness/CommandLineTestRunner.h"
 
int main(int ac, char** av)
{
  return CommandLineTestRunner::RunAllTests(ac, av);
}
 
IMPORT_TEST_GROUP(ClassName);//导入定义好的测试组

Example Test

#include "UnitTestHarness/TestHarness.h"
#include "ClassName.h"
 
TEST_GROUP(TEST_GROUP_Name)
{
  ClassName* className;
 
  void setup()
  {
    className = new ClassName();
  }
  void teardown()
  {
    delete className;
  }
}
 
TEST(TEST_GROUP_Name, Test_Case_Name)//第一个参数是定义该测试用例属于的测试组;第二个参数是定义该测试用例的名称
{
  CHECK(0 != TEST_GROUP_Name);
  CHECK(true);
  CHECK_EQUAL(1,1);
  LONGS_EQUAL(1,1);
  DOUBLES_EQUAL(1.000, 1.001, .01);
  STRCMP_EQUAL("hello", "hello");
  FAIL("The prior tests pass, but this one doesn't");
}

直接运行而非调试CppUTest框架,在构建完成后,运行测试、运行程序。该构建过程还会生成一个静态库(cpbutest/lib),其中包含可以将测试链接到的cpputest。
The build also produced a static library (cpputest/lib) holding CppUTest you can link your tests to.

你可能感兴趣的:(测试,编程软件的环境搭建,安装,使用以及项目结构的建立,CppUTest,测试组,测试用例,宏,makeFile)