溫馨提示×

c語言單元測試代碼怎么寫

小億
135
2023-10-26 14:53:30
欄目: 編程語言

在C語言中,可以使用一些單元測試框架來編寫和運行單元測試代碼。以下是一個使用CUnit框架編寫的基本示例:

#include <stdio.h>
#include <stdlib.h>
#include <CUnit/CUnit.h>
#include <CUnit/Basic.h>

// 測試的函數(shù)
int add(int a, int b) {
    return a + b;
}

// 初始化測試套件
int init_suite(void) {
    return 0;
}

// 清理測試套件
int clean_suite(void) {
    return 0;
}

// 測試用例1
void test_add_case1(void) {
    CU_ASSERT(add(2, 3) == 5);
}

// 測試用例2
void test_add_case2(void) {
    CU_ASSERT(add(0, 0) == 0);
}

// 主函數(shù)
int main() {
    // 初始化CUnit測試套件
    if (CUE_SUCCESS != CU_initialize_registry()) {
        return CU_get_error();
    }

    // 創(chuàng)建一個新的測試套件
    CU_pSuite suite = CU_add_suite("Addition Test Suite", init_suite, clean_suite);
    if (NULL == suite) {
        CU_cleanup_registry();
        return CU_get_error();
    }

    // 添加測試用例到測試套件
    if ((NULL == CU_add_test(suite, "add_case1", test_add_case1)) ||
        (NULL == CU_add_test(suite, "add_case2", test_add_case2))) {
        CU_cleanup_registry();
        return CU_get_error();
    }

    // 設(shè)置運行方式并運行測試
    CU_basic_set_mode(CU_BRM_VERBOSE);
    CU_basic_run_tests();
    CU_cleanup_registry();
    return CU_get_error();
}

在上述代碼中,首先包含了CUnit頭文件,然后定義了一個要測試的函數(shù) add,接著定義了初始化和清理測試套件的函數(shù) init_suiteclean_suite。然后,定義了兩個測試用例函數(shù) test_add_case1test_add_case2。

在主函數(shù)中,通過 CU_initialize_registry 初始化CUnit測試套件,然后通過 CU_add_suite 創(chuàng)建一個新的測試套件,并將測試用例添加到測試套件中。最后,通過 CU_basic_set_mode 設(shè)置運行方式為詳細模式,并使用 CU_basic_run_tests 運行測試。最后,通過 CU_cleanup_registry 清理測試套件。

編譯運行上述代碼后,將輸出測試結(jié)果,指示測試是否通過。

0