最初,我写了一个类(让我们称之为RangeSet
),它在一个ArrayList
区间(我定义为两个 Long 值的区间类)上运行。该列表是间隔的集合,有一种void add(Range range)
方法可以检查列表中已有的间隔是否存在重叠、覆盖、包含或邻接。关键是要保存非重叠区间的列表。
我为该类设计并编写了大量测试,检查了可能发生的各种情况。这就是我所说的很多代码。
现在事实证明(无论出于何种原因)我不得不将该类拆分为两个单独的类 -RangeSet
将是一个具有几个有用方法并从中继承的抽象类 - ArrayRangeSet
(在 中保存间隔集合ArrayList
)和TreeRangeSet
(保存集合a ) 中的区间TreeSet
。方法的实现add(Range range)
在这两者之间有很大不同。
我应该如何继承测试以避免定义测试数据的冗余?
示例测试如下所示:
@Test
void testCase4(){
RangeSet set = new RangeSet();
Range r1 = new Range(4, 5);
Range r2 = new Range(13, 15);
Range r3 = new Range(19, 22);
set.add(r1);
set.add(r2);
set.add(r3);
Range testRange = new Range(11,100);
set.add(testRange);
assertEquals(2,set.iterator().size());
assertEquals(new Range(4,5),set.iterator().getAt(0));
assertEquals(new Range(11,100),set.iterator().getAt(1));
}
我不知道我是否清楚:有很多测试数据定义并且这两个类的测试看起来相同。我该如何解决?
编辑:有没有办法将这些断言语句传递给继承的测试类?毕竟,这些add
方法应该实现相同的目标,尽管通过不同的操作。