项目场景:
软构实验主要立足于java的面向对象编程(oop),主要落脚点于ADT及其相关性质
问题描述
在实验2中对接口graph进行测试时,出现了GraphInstanceTest的测试方法,而观察其中具体实现(如下)
public abstract class GraphInstanceTest {
/**
* Overridden by implementation-specific test classes.
*
* @return a new empty graph of the particular implementation being tested
*/
public abstract Graph<String> emptyInstance();
可知这里采用的是一个抽象类来进行Junit测试;
而在接口poll的测试中,观察其中代码可知它采用的正常类来进行测试;
这其中不同引发了思考;
理解分析:
产生这样的差异的因素如下:
(1)对于接口graph的测试,因为在对接口的两个具体实现中,只是改变了其中所采用的的数据结构(一个edge,另一个vertices),没有改变/扩展接口中所定义的方法,这是在此基础上添加了所依赖的辅助类,所以在对其的测试中,只用对辅助类edge中所添加的方法进行test,而重写的方法测试默认在instancetest中进行,这样提高了测试代码书写的效率,降低重复性;
(2)而在对接口poll的测试中,其后面的三个实现,其中有对接口中定义的方法进行了扩展,所以测试用例应该会具有差异性,所以在此前提下,如果再采用抽象类测试集的方法,那必然会产生分歧;
思考:在测试用例的书写时依旧体现了鲜明的继承关系,把ADT的共性定义在接口和设置抽象类测试公共方法都是这个原理的具体表现。