java - 为接口(interface)中的默认方法编写 Junit 测试用例

标签 java junit

我正在使用 Java 1.8 并在接口(interface)中使用默认方法。 由于我们的目标是为所有方法编写 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);
}

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

最佳答案

在你的测试中你可以这样做:

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

但是在添加你的界面时,我认为你根本不应该有这个默认方法。我认为最好注入(inject)一个带有此方法的 TableInstructorParser 。这对您的关注点分离会更好。

关于java - 为接口(interface)中的默认方法编写 Junit 测试用例,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39274631/

相关文章:

java - 如何将短的 unicode HTML 文件保存为表字段?

java - 如何为特定的 Jenkins 工作设置 `killSoftly`?

java - Jersey 2 过滤器在客户端请求过滤器中使用容器请求上下文

java - Facebook SDK 无法启动 Activity ComponentInfo

java - 如何在 Java 测试结果中查看我的场景名称

java - 从java运行bat文件时有什么方法可以模拟用户输入吗?

java - JUNIT : run setup only once for a large number of test classes

java - 我们可以使用 dex2jar 工具或任何其他方式混淆 java 中的注释吗?

java - 断言等于精度

java - SonarQube 未使用 Java 8 测量代码覆盖率