在哪里测试超类的默认方法实现

时间:2017-09-01 06:31:29

标签: java testing design-patterns

我没有上课:

Parent.java

interface Parent{
    void method1();

    default void method2(){
       //some default impl
    }
}

ChildOne.java

class ChildOne implements Parent{
    @Override
    void method1(){
        //ChildOne specific implementation
    }
}

ChildTwo.java

class ChildTwo implements Parent{
    @Override
    void method1(){
        //ChildTwo specific implementation
    }
}

问题是:我应该在哪里进行方法2测试?我知道对于单元测试,我应该测试具体的实现,所以ChildOne和ChildTwo,但是当我有相同的方法2实现时,我不想复制我的测试。但是将它放入其中一个类似乎也不好。

Ofc,对于具有默认实现而不是接口的抽象类,问题是相同的。

1 个答案:

答案 0 :(得分:4)

你可以创建一个ParentTest类,并在那里编写测试,在测试中创建一个自定义子类实例(测试专用),允许测试默认方法。