数独-测试
测试
使用Junit5对三个类分别进行单元测试,单元测试的编写思路是黑盒测试,运用了路径覆盖和边界覆盖。对接口功能、边界条件等进行测试,并使测试覆盖率尽可能,测试用例尽可能全面。
MainTest
用于测试输入是否合法,以及是否可以顺利写入文件,
GenerateTest
测试其中的函数是否正常,并进行了重复性检测,检测器生成的1000个终局中是否有相同的情况。
SolveTest
对Solve
中部分主要函数进行了检测,并对求解结果进行了有效性检测,判断是否是否求出了正确的数独解。
![](https://img2018.cnblogs.com/blog/1903333/202001/1903333-20200118123957734-588724505.png)
单元测试覆盖率
![](https://img2018.cnblogs.com/blog/1903333/202001/1903333-20200119164801665-866270454.png)
Main
部分测试设计(期待状态=实际状态,即为成功)
编号 | 内容 | 状态 |
---|---|---|
1 | args[0]=11,args[1]=null | 成功 |
2 | args[0]="-c", args[1]="0" | 成功 |
3 | args[0]="-c", args[1]="1_000_001" | 成功 |
4 | args[0]="-c", args[1]="1_000_000" | 成功 |
5 | args[0]="-c", args[1]="D:/1.txt" | 成功 |
6 | args[0]="-s", args[1]="D:/1.txt" | 成功 |
7 | args[0]="-s", args[1]="D:/app/" | 成功 |
Generate
部分测试用例
函数 | 内容 | 状态 |
---|---|---|
createSeed | seed={1,2,...9},goalNum=1 | 成功 |
createSeed | seed={1,2,...9},goalNum=100 | 成功 |
createMap | int[][] temp={{5,1,2,7,8....},goal=1 | 成功 |
createMap | int[][] temp={{5,1,2,7,8....},goal=1 | 成功 |
swap | 交换两个数 | 成功 |
generateSudoku | count=1000(检测生成的1000个终局是否重复) | 成功 |
generateSudoku | count=1,000,000(检测生成的1,000,000个终局是否重复) | 成功 |
Solve
部分测试用例
函数 | 内容 | 状态 |
---|---|---|
findSolution | PATH=txt路径,里面有1000个数独,检查找到的解是否正确 | 成功 |
findSolution | PATH=txt路径,里面有100个高难数独,检查找到的解是否正确 | 成功 |
fill | Criterion[0]=510,Criterion[9]=510,Criterion[18]=510,row=0,col=0,value=5; | 成功 |
releaseNum | PATH=txt路径,row=0,col=0,value=4; | 成功 |
getBlock | row=0,col=0 | 成功 |
getBlock | row=3,col=4 | 成功 |
通过命令行执行程序,对得到结果进程测试
编号 | 命令行参数 | 结果 |
---|---|---|
1 | -c 0 | 能生成的终局在1-1,000,000之间 |
2 | -c -1 | 能生成的终局在1-1,000,000之间 |
3 | -c 1000 | 运行成功 |
4 | -c 1000000 | 运行成功 |
5 | -c 1000001 | 能生成的终局在1-1,000,000之间 |
6 | -c | 生成终局命令为:java sudoku -c 阿拉伯数字 |
7 | -a | 您的输入不正确 生成终局命令为:java sudoku -c 阿拉伯数字 求解数独命令为:java sudoku -s puzzle.txt的绝对路径 |
8 | -s D:\app\ | 路径需指向一个txt文件 |
9 | -s D:\app\unexisted.txt | 系统找不到指定的文件 |
10 | -s puzzle.txt | 运行成功 |