使用JUnit有效地复制相关子类的测试

时间:2014-09-14 16:59:00

标签: java unit-testing testing junit mockito

我在这里看到了How to test abstract class in Java with jUnit?的答案,这些答案表示不测试子类的父类,而是测试每个具体的类。但是,每个子类的测试都是相同的(超出了使用/测试的子类)。除了将复制粘贴到新的测试类并替换正在测试的子类之外,测试所有这些的最有效/最优雅的方法是什么?我可以看到做一个循环,但是有更好的选择吗?

1 个答案:

答案 0 :(得分:0)

使用Parameterized。例如,假设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
    }
}