【问题标题】:Cobertura : how to cover spring-data @Repository interfacesCobertura:如何覆盖 spring-data @Repository 接口
【发布时间】:2016-02-10 00:53:10
【问题描述】:

关于以下信息:

https://stackoverflow.com/a/14601831/704246

Cobertura 不检测接口

我想知道如何将 spring-data 接口添加到覆盖结果中,因为 @Repository 实现类仅由 Spring 在运行时声明和实例化。

考虑以下界面:

// src/main/java/my/package/MyObjectRepository.java

@Repository
public interface MyObjectRepository  {
    MyObject findMyObjectByCodeAndName(String code, String name);
}

以及以下测试:

// src/test/java/my/package/MyObjectRepositoryTest.java

// @RunWith(SpringJUnit4ClassRunner.class) + Spring configuration
public class MyObjectRepositoryTest {

    @Autowired
    private MyObjectRepository myObjectRepository;

    @Test
    public void myTest() {
        myObjectRepository.findMyObjectByCodeAndName("foo","bar");  
    }
}

我不介意改用 Jacoco,但我听说它也不支持接口。

如何涵盖以下情况?关于 Mybatis Mapper 也会出现同样的问题/问题,它们被声明为接口,但没有实现它们的具体 Java 类声明是由开发人员编写的,而是由框架在运行时编写的。

我已经打开了ticket,但我仍在等待答复。

【问题讨论】:

    标签: java spring-data instrumentation jacoco cobertura


    【解决方案1】:

    如果我理解正确,一个接口是不能被覆盖的。接口仅用于定义合约,不包含“运行时”命令。代码覆盖率工具仅测量运行测试可到达的行。换个说法,只能覆盖字段声明、构造函数或方法体。

    一个例外可能是包含一些默认方法的 Java8 接口。

    【讨论】:

      猜你喜欢
      • 2021-06-23
      • 2015-01-31
      • 2020-08-07
      • 1970-01-01
      • 2023-03-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多