gpt4 book ai didi

spring - 如何在测试中也自动连接 ErrorAttributes?

转载 作者:行者123 更新时间:2023-12-04 16:43:52 26 4
gpt4 key购买 nike

这可能是非常基本的,但我是 Spring Boot(以及 Spring 的许多方面)和 the documentation 的新手。没有直接回答这个问题。

设置

使用最新的 Spring Boot (1.2.1),我进行了一些集成测试,其中加载了 Spring,并且很好地 Autowiring 了依赖项(设置起来非常简单)。

测试的基类:

@RunWith(SpringJUnit4ClassRunner.class)
@SpringApplicationConfiguration(classes = Application.class)
public abstract class IntegrationTest {

}

Application类没有比 SpringApplication.run() 的 main 方法更多的东西和这些注释:
@ComponentScan
@EnableAutoConfiguration
@EnableScheduling

示例测试:
public class UserServiceTest extends IntegrationTest {    
@Autowired
UserService userService;

@Test
public void testSomething() throws Exception {
// Use UserService; make assertions
}
}

对于必要的依赖,我只有 spring-boot-starter-test :
<!-- Typical Spring Boot test dependencies: Spring Test, JUnit, Hamcrest, Mockito -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>

问题

我创建了一个自定义 ErrorController along these lines ,我在这里定义一个 @Autowired ErrorAttributes field 。见 the CustomErrorController source code .

在此之后,Spring 集成测试停止工作:
java.lang.IllegalStateException: Failed to load ApplicationContext
...
Caused by: org.springframework.beans.factory.NoSuchBeanDefinitionException:
No qualifying bean of type [org.springframework.boot.autoconfigure.web.ErrorAttributes] found for dependency:
expected at least 1 bean which qualifies as autowire candidate for this dependency.
Dependency annotations: {@org.springframework.beans.factory.annotation.Autowired(required=true)}

问题

在测试中也注入(inject) ErrorAttributes bean 的最简单、最干净的方法是什么?

我应该创建单独的 Application用于测试,带有某种模拟 ErrorAttributes bean,或者可能有更简单的方法?我是否缺少一些与 Web/ Controller 测试相关的帮助程序或依赖项?

最佳答案

您可以使用 @WebAppConfiguration 注释测试类指示 Spring 的测试框架在不实际启动嵌入式容器的情况下创建 Web 应用程序上下文(这足以 Autowiring ErrorAttributes )。

关于spring - 如何在测试中也自动连接 ErrorAttributes?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28671177/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com