Jon*_*nik 5 spring integration-testing spring-test spring-boot
这可能是非常基本的,但我是Spring Boot的新手(以及Spring的许多方面)并且文档没有直接回答这个问题.
使用最新的Spring Boot(1.2.1),我进行了一些集成测试,其中Spring被加载并且依赖性很好地自动装配(设置它非常简单).
测试的基类:
@RunWith(SpringJUnit4ClassRunner.class)
@SpringApplicationConfiguration(classes = Application.class)
public abstract class IntegrationTest {
}
Run Code Online (Sandbox Code Playgroud)
主Application
类没有比主要方法SpringApplication.run()
和这些注释更多:
@ComponentScan
@EnableAutoConfiguration
@EnableScheduling
Run Code Online (Sandbox Code Playgroud)
示例测试:
public class UserServiceTest extends IntegrationTest {
@Autowired
UserService userService;
@Test
public void testSomething() throws Exception {
// Use UserService; make assertions
}
}
Run Code Online (Sandbox Code Playgroud)
为了获得必要的依赖,我只需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>
Run Code Online (Sandbox Code Playgroud)
我沿着这些行创建了一个自定义的ErrorController ,我定义了一个@Autowired ErrorAttributes
字段.请参阅CustomErrorController源代码.
在此之后,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)}
Run Code Online (Sandbox Code Playgroud)
在测试中注入ErrorAttributes bean 的最简单,最干净的方法是什么?
我应该创建单独的Application
用于测试,使用某种模拟ErrorAttributes
bean,还是可能有更简单的方法?我错过了一些与Web /控制器测试相关的帮助或依赖吗?
使用注释来标记测试基类或单个测试用例类 @WebIntegrationTest
它在这里提到:
您可以使用@WebAppConfiguration
指示Spring的测试框架来创建Web应用程序上下文(足以进行自动装配ErrorAttributes
),而无需实际启动嵌入式容器.
归档时间: |
|
查看次数: |
4342 次 |
最近记录: |