1

フレームワーク基準https://github.com/Snaipe/Criterionを使用して単体テストを作成しました。メインからマクロに文字列を渡し、ソース コードを実行して結果を確認する必要があります。グローバル変数が使えません。完全なコードは次のとおりです。

#include <stdio.h>
#include <criterion/criterion.h>
#include <criterion/parameterized.h>

char* g_path_to_dir; //it doesn't work, because global variable is accessible within the same process 

struct input_data_t {
    const   char* path;
};

ParameterizedTestParameters(ArgsForenforce_perms, input_data_for_enforce_perms) {
    static struct input_data_t params[] = {
"some_data", 
"some_data2" 
};

    size_t nb_params = sizeof (params) / sizeof (struct input_data_t);
    return cr_make_param_array(struct input_data_t, params, nb_params);
}

ParameterizedTest(struct input_data_t *param, ArgsForenforce_perms,
          input_data_for_enforce_perms) {
    printf("pid of process in ParameterizedTest = %d \n", getpid());
}

int main(int argc, char *argv[])
{
    printf("pid of process in main = %d \n", getpid());
    g_path_to_dir = argv[1]; //it doesn't work, because global variable is accessible within the same process 

    struct criterion_test_set *tests = criterion_initialize();
    if (criterion_handle_args(argc, argv, true)) {
        result = !criterion_run_all_tests(tests);
    }

    criterion_finalize(tests);
    return result;
}
4

0 に答える 0