Cobertura:如何覆盖spring-data @Repository接口

时间:2015-11-09 11:25:10

标签: java spring-data instrumentation jacoco cobertura

关于以下信息:

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

  

Cobertura没有仪器接口

我想知道如何将spring-data接口添加到coverage结果中,因为@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,但我还在等待答案。

1 个答案:

答案 0 :(得分:0)

如果我理解正确,则无法覆盖界面。接口只是定义契约,不包含“运行时”命令。代码覆盖工具仅测量从正在运行的测试中可到达的行。换句话说,只能覆盖字段声明,构造函数或方法体。

异常可能是包含一些默认方法的Java8接口。