Regarding following information :
https://stackoverflow.com/a/14601831/704246
Cobertura does not instrument interfaces
I'd like to know how to add spring-data interfaces to coverage results, since @Repository
implementation classes are only declared and instantiated by Spring at runtime.
Consider following interface :
// src/main/java/my/package/MyObjectRepository.java
@Repository
public interface MyObjectRepository {
MyObject findMyObjectByCodeAndName(String code, String name);
}
and following test :
// 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");
}
}
I don't mind switching to Jacoco, but I've read that it doesn't instrument interfaces either.
How can following cases be covered ? The same issue/question occurs regarding Mybatis Mapper, which are declared as interfaces but no concrete Java class declaration implementing them is written by the developer but by the framework at runtime.
I've opened a ticket but I'm still waiting for an answer.