关于以下信息:
https://stackoverflow.com/a/14601831/704246 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 http://github.com/cobertura/cobertura/issues/279但我仍在等待答案。
如果我理解正确的话,接口不能被覆盖。接口只是定义契约,不包含“运行时”命令。代码覆盖率工具仅测量运行测试可到达的行。换句话说,只能覆盖字段声明、构造函数或方法体。
包含一些默认方法的 Java8 接口可能是一个例外。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)