最初に、間隔 (2 つの Long 値として私が定義した間隔クラスRangeSet
) で動作するクラス (それを と呼びましょう) を作成しました。ArrayList
リストは間隔のコレクションであり、void add(Range range)
すでにリストにある間隔との重複、上書き、包含、または隣接があるかどうかをチェックするメソッドがありました。ポイントは、重複しない間隔のリストを保持することでした。
私は、そのクラスの広範なテストを設計して作成し、発生する可能性のあるさまざまなケースをチェックしました。私が言っているのはたくさんのコードです。
さて、(何らかの理由で)そのクラスを2つの別々のクラスに分割しなければならなかったことがわかりました-RangeSet
いくつかの便利なメソッドを持つ抽象クラスになり、それから継承されます- ArrayRangeSet
(間隔のコレクションを保持するArrayList
)およびTreeRangeSet
(コレクションを保持するの間隔のTreeSet
)。メソッドの実装はadd(Range range)
、これら 2 つの間で大きく異なります。
テスト データを定義する際の冗長性を避けるために、テストを継承するにはどうすればよいですか?
テストの例は次のようになります。
@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));
}
はっきり言っているかどうかはわかりません。多くのテスト データが定義されており、これら 2 つのクラスのテストは同じように見えます。どうすれば解決できますか?
編集:これらの assert ステートメントを継承されたテスト クラスに渡す方法はありますか? 結局のところ、これらのadd
メソッドは、操作は異なりますが、同じ目標を達成するはずです。