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



我在这里看到了答案如何用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
    }
}

相关内容

  • 没有找到相关文章

最新更新