我有如下配置类
@Configuration
public class Configuration {
@Autowired
private JdbcTemplate jdbcTemplate;
@Bean
SimpleJdbcCall simpleJdbcCall() {
return new SimpleJdbcCall(jdbcTemplate).withProcedureName("");
}
}
我正在尝试为此配置类编写单元测试。我的测试类如下所示。
@ContextConfiguration(classes = { Configuration.class })
@RunWith(SpringRunner.class)
public class ConfigurationTest {
ApplicationContextRunner context = new ApplicationContextRunner()
.withUserConfiguration(Configuration.class);
@Test
public void should_check_presence_of_example_service() {
context.run(it -> {
assertThat(it).hasSingleBean(SimpleJdbcCall.class);
});
}
}
当我在计算机上运行测试时 ConfigurationTest
同学们,我遇到了一个类似下面的错误。
创建名为“configuration”的bean时出错:通过字段“jdbctemplate”表示的未满足的依赖关系;嵌套异常为org.springframework.beans.factory.nosuchbeandefinitionexception:没有类型为“org.springframework.jdbc.core.jdbctemplate”的合格bean可用:至少需要1个符合autowire候选的bean。依赖项注解:{@org.springframework.beans.factory.annotation.autowired(required=true)}
我试图通过在配置类中装入bean jdbctemplate并传递数据源来解决这个问题。然后测试单元测试没有找到bean数据源。之后,我在configurationtest类中使用了@testconfiguration并 Package 了一个mock(jdbctemplate)。这也不管用。
1条答案
按热度按时间ffscu2ro1#
我找到了解决我问题的方法,我想如果有人遇到同样的情况,可能会对其他人有所帮助。实际上,由于公司的要求,我的目标是增加测试覆盖率,下面的解决方案适合我。
我改变了我的配置类如下
我不得不改变我的测试类如下。现在测试类没有抱怨了,我得到了配置类100%的覆盖率。