关于下列资料:
https://stackoverflow.com/a/14601831/704246
Cobertura没有仪器接口。
我想知道如何向覆盖率结果添加Spring数据接口,因为@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上,它被声明为接口,但没有实现它们的具体Java类声明是由开发人员编写的,但在运行时由框架编写。
我打开了一个票证,但我仍在等待答案。
发布于 2016-01-14 10:27:46
如果我理解正确,就无法覆盖接口。接口只是定义契约,并且不包含“运行时”命令。代码覆盖率工具只测量从运行的测试中可以到达的行。换句话说,只能涵盖字段声明、构造函数或方法主体。
异常可能是包含一些默认方法的Java8接口。
https://stackoverflow.com/questions/33608075
复制相似问题