当前位置: 首页 > 知识库问答 >
问题:

如何让ErrorAttributes也在测试中自动连线?

艾宁
2023-03-14

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

使用最新的Spring Boot(1.2.1),我进行了一些集成测试,其中Spring被加载并且依赖关系很好地自动连线(设置这个非常简单)。

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

}

mainApplication类除了带有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>
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)}

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

我是不是应该创建单独的application,使用某种被嘲弄的errorattributesbean,或者有更简单的方法?我是否缺少了一些与Web/控制器测试相关的帮助器或依赖项?

共有1个答案

莫繁
2023-03-14

您可以使用@webappconfiguration注释一个测试类,以指示Spring的测试框架创建一个web应用程序上下文(这足以自动执行errorattributes),而不必实际启动嵌入式容器。

 类似资料:
  • 2014-12-20 15:35:52错误TestContextManager:334-允许TestExecutionListener[org.springframework.test.context.support.dependencyInjectionTestExecutionListener@5af97850]准备测试实例[com.amsb.bariz.base.test.usertest@

  • 我有一个使用SpringMVC和SpringBoot的项目,我使用IntelliJ。我的项目如下: 我用注释服务实现。 我用以下内容注释了配置文件 在控制器中,我向服务注入 在测试类中,我使用相同的注释注入相同的服务: 我用以下方法注释测试类: 在控制器中,注入工作正常,但是在测试类中,IntelliJ说: 无法自动连线。找不到WelcomeService类型的beans。 当我运行测试时,它是有

  • 我在网上做了很多搜索,但找不到一个使用自动连接构造函数进行单元测试的例子。我正在使用Spring将属性文件中的值自动关联到我的应用程序。我想对我的应用程序进行单元测试。java的start方法,但我有一个自动连接的构造函数,所以我不知道如何实例化MyApp。在没有自动连线属性的情况下,我在单元测试中这样做: 我不想模拟自动布线,因为我需要从属性文件中获取值,并且为了使事情更加复杂,我正在通过注释配

  • 我正在使用Spring 3.1.0。发布和JUnit 4.8.1.我很难弄清楚为什么类的成员字段在JUnit测试中没有自动生成。我的测试看起来像... 类"EventFeed"调用以下类的实例... 但当它出现时,AbstractEventParser的“netUtilsService”成员字段为空。这很奇怪,因为在我的“testApplicationContext.xml”文件中,我有这个,我认

  • 我想测试一些包含其他autowired服务的服务。但这些“外部”服务对于测试本身并不是必需的。 我如何创建一个测试设置,例如下面的例子? ApplicationContext.xml: 问题:所有包含来自未在测试中扫描的包(如)的自动连线依赖项的服务都将引发异常: 原因:org.springframework.beans.factory.NoSuchBeanDefinitionException: