C言語のユニットテストのコードの書き方

C言語では、いくつかのユニットテストフレームワークを使用して、ユニットテストコードを作成および実行できます。以下は、CUnitフレームワークを使用して作成された基本的な例です。

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

// 测试的函数
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);
}

// 主函数
int main() {
    // 初始化CUnit测试套件
    if (CUE_SUCCESS != CU_initialize_registry()) {
        return CU_get_error();
    }

    // 创建一个新的测试套件
    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();
    }

    // 设置运行方式并运行测试
    CU_basic_set_mode(CU_BRM_VERBOSE);
    CU_basic_run_tests();
    CU_cleanup_registry();
    return CU_get_error();
}

上記のコードでは、CUnitヘッダーファイルを読み込んでからテスト対象の関数addを定義して、続いてテストスイートを初期化およびクリーンアップする関数init_suiteとclean_suiteを定義しています。その後、2つのテストケース関数test_add_case1とtest_add_case2を定義しています。

main 関数では、CU_initialize_registry で CUnit テストスイートを初期化し、CU_add_suite で新しいテストスイートを作成し、テストケースを追加します。最後に、CU_basic_set_mode で実行モードを詳細モードに設定し、CU_basic_run_tests でテストを実行します。最後に、CU_cleanup_registry でテストスイートをクリーンアップします。

実行されたコードがテストに合格したかどうかを示すテスト結果が出力されます。

bannerAds