关于以下信息:
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,但我还在等待答案。
答案 0 :(得分:0)
如果我理解正确,则无法覆盖界面。接口只是定义契约,不包含“运行时”命令。代码覆盖工具仅测量从正在运行的测试中可到达的行。换句话说,只能覆盖字段声明,构造函数或方法体。
异常可能是包含一些默认方法的Java8接口。