1019.单元测试工具CUnit

1 CUnit 单元测试工具的安装

在这里插入图片描述

2 关于cunit编译成第3库添加到eclipse中使用

3 cunit示例demo

  • 通常用法

使用CUnit框架的典型步骤是:

编写待测函数(必要时,还得编写套件的 init/cleanup 函数)。
初始化测试注册表(Test Registry) - CU_initialize_registry()
将套件(Suite)添加到测试注册表 - CU_add_suite()
将测试用例(Test)加到套件里 - CU_add_test()
调用合适的接口函数执行测试,例如CU_console_run_tests
清除测试注册表 - CU_cleanup_registry

/*
 ============================================================================
 Name        : cunit_test_demo.c
 Author      : xhome
 Version     :
 Copyright   : Your copyright notice
 Description : Hello World in C, Ansi-style
 ============================================================================
 */

#include <stdio.h>
#include <stdlib.h>
#include <stdbool.h>
#include "CUnit/CUnit.h"
#include "CUnit/Basic.h"
#include "CUnit/Automated.h"

//加法函数
int add_func(int a, int b)
{
	return a+b;
}
//除法函数
double div_func(int a, int b)
{
	if(b == 0){
		printf("b is 0.");
		return -1;
	}
	return a/b;
}
//开辟空间
char * malloc_func(int size)
{
	char * p = NULL;

	p = (char *)malloc(size * sizeof(char));
	if(p == NULL)
	{
		return NULL;
	}

	return p;
}

//add case
void add_func_case(void)
{
	int expectValue = 0;

	expectValue = 9;
	CU_ASSERT_TRUE(expectValue == add_func(4, 5));
    expectValue = 11;
    CU_ASSERT_TRUE(expectValue == add_func(10, 1));
}
//div case
void div_func_case(void)
{
    int retValue = 0;

    retValue = 2;
    CU_ASSERT_TRUE(retValue == div_func(10,5));

    retValue = 3;
    CU_ASSERT_TRUE(retValue == div_func(9,3));

    retValue = -1;
    CU_ASSERT(retValue == div_func(9,0));
}

//div case
void malloc_func_case(void)
{
   //可以使用专门的指针地址测试函数
    CU_ASSERT(malloc_func(-1) == NULL);
    CU_ASSERT(malloc_func(1024) != NULL);
}

//init
int cunit_test_init(void)
{
    return 0;
}
//cleanup
int cunit_test_cleanup(void)
{
    return 0;
}

// test cases
  CU_TestInfo cunit_test_case[] = {
      {"add_func_case", add_func_case},
      {"div_func_case", div_func_case},
      CU_TEST_INFO_NULL,
  };

  // test cases
CU_TestInfo cunit_ptr_case[] = {
        {"malloc_func_case", malloc_func_case},
        CU_TEST_INFO_NULL,
};

// suite
 CU_SuiteInfo suites[] =
 {
     { "Test demo", cunit_test_init, cunit_test_cleanup, NULL, NULL, cunit_test_case },
	 { "Test demo1", cunit_test_init, cunit_test_cleanup, NULL, NULL, cunit_ptr_case },
     CU_SUITE_INFO_NULL,
 };

int main(void) {

	puts("!!!Hello World!!!"); /* prints !!!Hello World!!! */


	if(CUE_SUCCESS != CU_initialize_registry()){
		printf("<CUnit Test> CU_initialize_registry fail!!!\n");
		return CU_get_error();
	}

	 if(CUE_SUCCESS != CU_register_suites(suites)){
		printf("<CUnit Test> CU_register_suites fail!!!\n");
		CU_cleanup_registry();
		return CU_get_error();
	 }

#if 1
      //output file.xml
      CU_set_output_filename("cunit_test_demo");
      CU_list_tests_to_file();
      CU_automated_run_tests();
  #endif

      CU_basic_set_mode(CU_BRM_VERBOSE);
      CU_basic_run_tests();

      CU_cleanup_registry();

	return EXIT_SUCCESS;
}

4 展示效果

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

5 CUnit 的交叉编译

./configure --host=arm-linux --prefix=/home/xxx/opt_soft/cunit_arm_install CC=/home/xxx/petalinux2018.3/tools/linux-i386/aarch64-linux-gnu/bin/aarch64-linux-gnu-gcc
make
make install

6 参考博客

cunit中文手册

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

guangshui516

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值