测试案例demo

笔记 · 2024-08-24 · 94 人浏览
测试案例demo

  如何使用结构体、函数指针和动态内存分配来组织和管理测试案例。

#include <stdio.h>  
#include <stdlib.h>  

// 定义一个结构体,用于存储测试相关的数据  
typedef struct   
{  
    int output;     // 预期的输出结果  
    int a;          // 第一个输入参数  
    int b;          // 第二个输入参数  
    int (*TestEMFunc)(int, int); // 函数指针,指向一个接受两个int参数并返回一个int结果的函数  
} T_EMTest;  

// addFunc函数:创建一个T_EMTest类型的结构体实例,并初始化其成员  
// 参数包括一个函数指针和两个整数输入以及一个预期的输出  
T_EMTest* addFunc(int (*TestEMFunc)(int, int), int a, int b, int output)  
{  
    T_EMTest* m_EMTest = (T_EMTest*)malloc(sizeof(T_EMTest)); // 动态分配内存  
    if (m_EMTest == NULL) { // 检查内存分配是否成功  
        fprintf(stderr, "Memory allocation failed\n");  
        exit(EXIT_FAILURE); // 分配失败则退出程序  
    }  
    m_EMTest->a = a;        // 初始化结构体成员  
    m_EMTest->b = b;  
    m_EMTest->TestEMFunc = TestEMFunc;  
    m_EMTest->output = output;  

    return m_EMTest; // 返回指向结构体的指针  
}  

// runEMTest函数:执行一个测试案例,并释放分配的内存  
void runEMTest(T_EMTest* p_EMTest)  
{  
    if(p_EMTest != NULL)  
    {  
        int count = p_EMTest->TestEMFunc(p_EMTest->a, p_EMTest->b); // 调用函数指针指向的函数  
        if(count == p_EMTest->output)  
        {  
            printf("SUCCESS! \n"); // 如果返回值与预期输出相等,则测试成功  
        }  
        else   
        {  
            printf("FAIL! %d != %d \n", count, p_EMTest->output); // 否则,测试失败  
        }  
        free(p_EMTest); // 释放为测试案例分配的内存  
    }  
}  

// 一个简单的加法函数,用于测试  
int add (int a, int b)  
{  
    return a + b;  
}  

// 主函数  
int main()  
{  
    printf("app start \n"); // 程序开始  
    T_EMTest* m_EMTest = addFunc(add, 1, 2, 3); // 创建一个测试案例,期望add(1, 2)返回3  
    if (m_EMTest != NULL) { // 检查addFunc是否成功返回了非空指针  
        runEMTest(m_EMTest); // 执行测试案例  
    }  
    return 0; // 程序正常结束  
}
C
Theme Jasmine by Kent Liao

本网站由 又拍云 提供CDN加速/云存储服务

鄂ICP备2023005457号    鄂公网安备 42011302000815号

欢迎来自 * · * 的用户