标签:覆盖 等价 ring gen sudoku call 检测 buffered model
单元测试的方式是黑盒测试,即通过每个环节的输入输出情况进行测试。程序由四个类组成,对应生成四个测试类,使用Junit5对其中的主要方法进行测试。测试的大致思路是预先设计较为简单的数独用例,生成新的对象,运行方法,并将阶段性的结果与预先计算的结果相比较。
有些方法具有返回值,便于设计测试类,例如对 Main::isNumber()进行测试:
//Main::isNumber
public static boolean isNumber(String str){
String reg = "^[0-9]+?$";
return str.matches(reg);
}
//MainTest::testIsNumber
对于更多没有返回值的方法,采取验证阶段结果的方法,预测方法执行后对象属性的变化并加以验证。例如对SudokuGenerator::creatFirstBlock()方法的测试,该方法执行后生成数独的第一小宫。测试类中将第一小宫所有值求和验证是否完成。
所有测试类及运行结果:
(其中failure是对被测方法进行了错误输入的验证)
本环节主要测试不同输入指令的运行结果。对指令输入的可能情况进行等价类划分后得到测试用例表如下:
(空白部分表示输入为合法输入,程序正常运行)
结合系统测试的用例与单元测试,使用eclipse的插件检测覆盖率。在项目上右键 -> Coverage As -> 2 JUnit Test,就可以在控制台窗口看见覆盖率结果。
下载并安装JProfile 11.1试用版, 需要注意的是,当执行插件安装时,需要关闭Eclipse。 在安装向导处选择IDE(eclipse 4.8),点击“Integrate”选择IDE的安装路径。完成后,使用“-clean”参数在命令行窗口打开eclipse,在Window -> Perspective -> Customize Perspective -> Action Set Availability, 找到Profile并选中。之后就可以在main类窗口右键 -> Profile As运行JProfile。需要注意的是,因为项目需要输入参数,所以选择“Profile Configurations...”填写指令在运行。
在JProfile中,我们主要看的是CPU的占用情况。因此我查看了call tree和hot pot的图表。
从图表中可以看出与文件写入有关的FileWrite与BufferedWriter明显占用了很大资源,导致整体程序运行较慢。
标签:覆盖 等价 ring gen sudoku call 检测 buffered model
原文地址:https://www.cnblogs.com/FounDerSquare/p/12233687.html