为接口中的默认方法编写 Junit 测试用例

Ren*_*hya 2 java junit

我正在使用 Java 1.8 并在接口中使用默认方法。由于我们的目标是为我们拥有的所有方法编写 JUnit,因此我需要为默认方法编写 Junit。有人可以帮助我知道我们是否可以实现它。

我的界面如下。

 public interface DataFilter {

   default public TableInclusions parseYaml(String path) throws IOException {

    Resource resource = new ClassPathResource(path);
    Yaml yaml = new Yaml();
    yaml.setBeanAccess(BeanAccess.FIELD);
    return yaml.loadAs(resource.getInputStream(), TableInclusions.class);
   }

   public DBMSEvent filter(DBMSEvent jsonString) throws FilterException;

   public void setYaml(String path);
}
Run Code Online (Sandbox Code Playgroud)

我是否需要为实现此接口的类的方法编写 Junit 并使用此默认方法来测试它?

Bob*_*nks 5

在您的测试中,您可以执行以下操作:

DataFilter dataFilter = new DataFilter() {
//Add no-op implementation for other methods
};
datafilter.parseYaml(testPath);
Run Code Online (Sandbox Code Playgroud)

但是看起来添加你的界面我认为你根本不应该有这个默认方法。我认为最好在其中注入带有此方法的 TableInstructorParser。这对您的关注点分离会更好。