【发布时间】:2025-11-21 08:20:03
【问题描述】:
我正在使用 cobertura maven 插件来生成关于我的基于 spring 的应用程序的测试代码覆盖率的报告。我的单元测试配置为:
@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(locations = "classpath:/testAppContext.xml")
public class TestCase extends TestBase
testAppContext.xml - 位于 /src/test/resources/testAppContext.xml 的 Spring IOC 配置
而我cobertura的相关pom.xml部分是:
<build>
...
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>cobertura-maven-plugin</artifactId>
<executions>
<execution>
<goals>
<goal>clean</goal>
</goals>
</execution>
</executions>
</plugin>
...
<build>
<reporting>
<plugins>
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>cobertura-maven-plugin</artifactId>
</plugin>
</plugins>
</reporting>
当我制作“mvn clean install”时它工作正常,但是当我制作“mvn site”时 - 基于弹簧的测试失败,因为“加载 ApplicationContext 失败”和底层“自动装配依赖项注入失败”,所以我收到有关测试覆盖率的错误报告。
我认为这可能是因为 testAppContext.xml 在“站点”目标或其他情况下不在类路径中。有什么建议可以解决这个问题吗?
感谢您的帮助!
【问题讨论】:
-
你能发布完整的堆栈跟踪吗?也可以看看:*.com/questions/8391944
-
@TomaszNurkiewicz 它也适用于我的情况。我在堆栈跟踪中没有“名为 'x' 的 Bean 必须是 [y] 类型,但实际上是 [$Proxy] 类型”,所以我没有机会找到这个解决方案。感谢您的回答和此链接!
标签: spring unit-testing dependency-injection code-coverage cobertura