C中本地有测试用例的问题

问题描述 投票:0回答:1

您好,我的任务是编写测试,该测试会检查Minesweeper板(选择重播选项之后)是否与前一块不同。

首先,我编写了主函数the replay

之后,我在本地对它进行了测试,并且每个游戏,每个游戏板都不同。没有问题。所以我开始写测试用例,现在我在这里。

TEST replay_board() {
    Game *game = create_game();
    Board *board = create_board(9, 9, 9);
    game->board = board;
    int k = 0;

    char* mine_list[100];
    for (int i = 0; i < 9; i++) {
        for (int j = 0; j < 9; j++) {
            if (game->board->tiles[i][j]->is_mine == true) {
                mine_list[k] = '1';
            } else {
                mine_list[k] = '0';
            }
            k++;
        }
    }
    mine_list[k] = '\0';

    replay_game("yes", game);

    char mine_list2[100];
    k = 0;

    for (int i = 0; i < 9; i++) {
        for (int j = 0; j < 9; j++) {
            if (game->board->tiles[i][j]->is_mine == true) {
                mine_list2[k] = '1';
            } else {
                mine_list2[k] = '0';
            }
            k++;
        }
    }
    mine_list2[k] = '\0';
    int same = 0;

    if (strcmp(mine_list, mine_list2) != 0) {
        same = 0;
    } else {
        same = 1;
    }
    ASSERT_EQ(same, 0);
    PASS();
    destroy_game(game);
}

在每项测试中,它都写出那只旧公猪与前一只相同,但在本地我可以看到它们并不相同。

我不知道比较两个字符串的理想方法,但这是从结构中比较它们的最简单方法

c testing compare structure assert
1个回答
0
投票

这里是问题:

char* mine_list[100];

您将mine_list定义为char *的数组,而不是char的数组。无论您在哪里使用编译器,它都应该给您一些警告。将其更改为char

的数组
char mine_list[100];
© www.soinside.com 2019 - 2024. All rights reserved.