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



我有流浪类:

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测试?我知道,对于单位测试,我应该测试Chortone和Childtwo的混凝土实现,但是当我具有相同的Method2实现时,我不想重复测试。但是,将其放入这些课程之一似乎也不是不错的。

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

您可以通过在测试中创建自定义子类实例(私有测试)来创建ParentTest类,并在此处写测试,该实例允许测试默认方法。

最新更新