Java 具有安全性的Spring引导-测试无法加载上下文
我有一个Spring boot应用程序,只是增加了安全性。这破坏了我的测试,因为上下文甚至无法加载 测试处理的是服务层和持久层,因此安全性根本不应该影响它们。这是为控制器设计的 我遵循了一个官方github示例,并进行了以下简单的安全配置:Java 具有安全性的Spring引导-测试无法加载上下文,java,spring,spring-mvc,spring-security,Java,Spring,Spring Mvc,Spring Security,我有一个Spring boot应用程序,只是增加了安全性。这破坏了我的测试,因为上下文甚至无法加载 测试处理的是服务层和持久层,因此安全性根本不应该影响它们。这是为控制器设计的 我遵循了一个官方github示例,并进行了以下简单的安全配置: @Configuration @Order(SecurityProperties.ACCESS_OVERRIDE_ORDER) public class ApplicationSecurity extends WebSecurityConfigurerAda
@Configuration
@Order(SecurityProperties.ACCESS_OVERRIDE_ORDER)
public class ApplicationSecurity extends WebSecurityConfigurerAdapter {
@Override
public void configure(HttpSecurity http) throws Exception {
http.antMatcher("/**").csrf().disable();
http.authorizeRequests()
.antMatchers("/user").permitAll()
.anyRequest().authenticated();
}
}
运行该应用程序工作正常,符合预期。但是运行测试,例如:
@RunWith(SpringJUnit4ClassRunner.class)
@SpringApplicationConfiguration(classes = DeadlinesApplication.class)
public class TaskDAOHibernateTest {
@Test
@Transactional
public void someTest() {...}
}
在以下情况下失败:
Caused by: org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'applicationSecurity': Injection of autowired dependencies failed; nested exception is org.springframework.beans.factory.BeanCreationException: Could not autowire method: public void org.springframework.security.config.annotation.web.configuration.WebSecurityConfigurerAdapter.setAuthenticationConfiguration(org.springframework.security.config.annotation.authentication.configuration.AuthenticationConfiguration); nested exception is org.springframework.beans.factory.NoSuchBeanDefinitionException: No qualifying bean of type [org.springframework.security.config.annotation.authentication.configuration.AuthenticationConfiguration] found for dependency: expected at least 1 bean which qualifies as autowire candidate for this dependency. Dependency annotations: {}
将@EnableWebSecurity
注释添加到类中确实允许通过测试,但是在文档中有以下内容:
To switch off the default web security configuration completely you can add a bean with @EnableWebSecurity
我想保留默认配置,只是有选择地覆盖它。尝试将
@WebAppContext
添加到测试中。它应该来自哪个包?我到处都找不到。我的坏。。我的意思是,@WebAppConfiguration
。尝试将@WebAppContext
添加到测试中。它应该来自哪个包?我到处都找不到。我的坏。。我的意思是,@WebAppConfiguration
。