我在这里看到了答案如何用jUnit测试Java中的抽象类?这意味着不要为子类测试父类,而是测试每个具体类。然而,每个子类的测试都是相同的(除了正在使用/测试的子类之外)。除了复制粘贴到新的测试类和替换正在测试的子类之外,测试所有这些的最有效/最优雅的方法是什么?我可以做一个循环,但有更好的选择吗?
使用参数化。例如,假设Foobar
&Barbar
均实现Baz
接口
@RunWith(Parameterized.class)
public class BazTest {
@Parameters
public static Collection<Object[]> data() {
return Arrays.asList(new Object[][] {
{ new Foobar(),
new Barbar(), }
});
}
private Baz baz;
public BazTest(Baz baz) {
this.baz= baz;
}
@Test
public void test() {
// assert something about baz
}
}