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

2024-02-01

关于以下信息:

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(使用前将#替换为@)

Cobertura:如何覆盖 spring-data @Repository 接口 的相关文章

随机推荐