目录
单元测试
单元测试主要分为5部分,
-
数独生成模块的测试
-
数独题目生成模块的测试
-
求解数独模块的测试
-
mainfun函数的测试
-
计算文件行数函数的测试
数独生成模块的测试
由于数独生成模块终局路径不由用户给出,所以不用测试路径的合法性,只需测试生成不同数量的终局,由于需求要求生成数独个数在1~1000000之间,而且通过mainfun函数的合法性判断,数独生成模块generate_final的参数取值只可能为1~1000000。为所以我们给出的测试用例分别为。
为了检验是否生成所给要求的数独,实现了一个函数,可以通过计算终局文件的行数来确定生成终局的个数。
测试内容 | 测试用例 |
---|---|
生成终局数目 | 0 |
1 | |
500 | |
1000000 |
TEST(GenerateTest, size1) {
generate_final(1, FINALPATH);
int sign = value_file(1, FINALPATH);
EXPECT_TRUE(sign);
}
TEST(GenerateTest, size500) {
generate_final(500, FINALPATH);
int sign = value_file(500, FINALPATH);
EXPECT_TRUE(sign);
}
TEST(GenerateTest, size1e6) {
generate_final(1000000, FINALPATH);
int sign = value_file(1000000, FINALPATH);
EXPECT_TRUE(sign);
}
求解数独模块的测试
求解数独可能会出现以下几种情况,题目文件不存在,题目文件没有内容,题目文件符合要求。
所以需要设计3个测试用例
题目文件不存在
-
设slove_all函数所传参数为 test_noexist.txt(目录中不存在的文件)
-
调用slove_all函数,查看返回值是否正确
题目文件没有内容
-
建立test_empty.txt文件
-
调用slove_all函数,查看返回值是否正确
题目文件符合要求
-
检查默认题目文件是否存在,是否有数独
-
如果符合条件则调用slove_all函数
-
如果不符合条件调用generate_que函数生成一定数量的数独
-
调用slove_all函数
-
调用isvalue_sudoku函数检查所解数独是否正确。
/测试解数独结果的正确性,保证数独题目文件内有题目,否则先生成数独题目
TEST(SolutionTest, answersright) {
ifstream ifile;
ifile.open(QUESTIONPATH);
if (!ifile) {
generate_que(10);
}
ifile.close();
slove_all(QUESTIONPATH);
int sign=isvalue_sudoku(SOLUTIONPATH);
EXPECT_TRUE(sign);
}
//测试解数独,当数独文件不存在时
TEST(SolutionTest, nofile) {
char filename[] = "test_noexist.txt";
int sign=slove_all(filename);
EXPECT_EQ(sign, 1);
}
//测试解数独,当数独文件为空时
TEST(SolutionTest, emptyfile) {
char filename[] = "test_empty.txt";
ofstream ofile;
ofile.open(filename);
ofile.close();
int sign = slove_all(filename);
EXPECT_EQ(sign,2 );
}
结果:
mainfun函数的测试
此函数实现获取命令行参数,检查命令合法性,并调用不同的函数的功能。
需要测试所给命令的参数个数,不同的功能参数(-c,-s,-q),以及不同功能参数下的参数(如范围,字母数字等)
测试内容 | 类型 | 测试用例 |
---|---|---|
参数个数 | 2个 | argc=2,argv={ " ","-c" } |
3个 | argc=3,argv={ " ","-c","100" } | |
4个 | argc=4,argv={ " ","-c","100","11" } | |
其他参数 | -aa | argc=3,argv={ " ","-aa","100" } |
测试内容 | 类型 | 测试用例 |
---|---|---|
-c 参数 | 负数 | argc=3,argv={ " ","-c","-2" } |
0 | argc=3,argv={ " ","-c","0" } | |
1 | argc=3,argv={ " ","-c","1" } | |
1000000 | argc=3,argv={ " ","-c","1000000" } | |
1000008 | argc=3,argv={ " ","-c","1000008" } | |
字母 | argc=3,argv={ " ","-c","aa" } |
由于生成数独在函数内会判断是否小于等于终局数,此处已经在终局文件中生成50个数独终局
测试内容 | 类型 | 测试用例 |
---|---|---|
-q参数 | 负数 | argc=3,argv={ " ","-q","-1" } |
all | argc=3,argv={ " ","-q","all" } | |
字符 | argc=3,argv={ " ","-q","aa" } | |
数目大于终局数 | argc=3,argv={ " ","-q","51" } | |
数目小于等于终局数 | argc=3,argv={ " ","-q","49" } |
结果:
计算文件行数函数的测试
linenum函数已经确保文件存在.
在测试中,首先需要建立一个文件text_line.txt ,然后给文件写入不同的行
测试内容 | 测试用例 |
---|---|
行数 | 0 |
1 | |
1000000 |
来源:CSDN
作者:一只辛巴
链接:https://blog.csdn.net/lanshi00/article/details/104044406