programing

Spring Boot 2.1 - Spring Security 자동 구성 없이 @WebMvcTest

powerit 2023. 7. 2. 21:05
반응형

Spring Boot 2.1 - Spring Security 자동 구성 없이 @WebMvcTest

Spring Boot 2.1로 마이그레이션하기 전에 서비스에서 몇 가지 컨트롤러 테스트를 수행했습니다.@WebMvcTest와 결합하여@AutoConfigureMockMvc:

@WebMvcTest(SomeController.class)
@AutoConfigureMockMvc(secure = false)
public class SomeControllerTests { ... }

이로 인해 스프링 보안 구성이 비활성화되어 OAuth/J를 조롱하지 않고 MVC 테스트를 실행할 수 있습니다.WT.

Spring Boot 2.1에서는secured속성은 더 이상 사용되지 않으며 릴리스 노트에는 다음이 언급되어 있습니다.

[...] @WebMvcTest는 WebSecurityConfigurer bean [...]을(를) 찾습니다.

사용되지 않는 제품을 방지하기 위해secured우리의 속성과 로딩.WebSecurityConfigurer우리는 다음과 같이 테스트를 다시 작성했습니다.

@WebMvcTest(
    value = SomeController.class,
    excludeFilters = @ComponentScan.Filter(type = FilterType.ASSIGNABLE_TYPE, classes = WebSecurityConfigurer.class),
    excludeAutoConfiguration = MockMvcSecurityAutoConfiguration.class)
public class SomeControllerTests { ... }

문제는 Spring Boot 2.1에서 이러한 테스트를 정의할 수 있는 보다 컴팩트한 방법이 있느냐는 것입니다.

네, 국기가 사용되지 않는다는 사실을 고려하기보다는 앞으로 그 방향으로 가고 있다는 사실을 받아들여야 합니다.

Spring Boot 2.1부터는 Spring Security를 사용하는 경우 사용자 지정 구성을 사용하여 테스트가 보호됩니다.그것의 실제 문제는 무엇입니까?

특정 테스트에 대해 인증하지 않으려면 Spring Security의 테스트 인프라를 사용하고 다음을 추가하십시오.@WithMockUser.

동일한 시나리오를 접했으며 도움이 된 것은 다음 주석을 대신 사용하는 것이었습니다.@WebMvcTest이 경우에는,@WithMockUser도움이 되지 않았습니다.

@WebAppConfiguration
@Import({MockMvcAutoConfiguration.class})
@EnableConfigurationProperties({ResourceProperties.class, WebMvcProperties.class})

에 존재했던 클래스controllers/value@WebMvcTest에 들어갑니다.value@Import주석

출처: https://github.com/spring-projects/spring-boot/issues/14227#issuecomment-688824627

언급URL : https://stackoverflow.com/questions/53389774/spring-boot-2-1-webmvctest-without-spring-security-auto-configuration

반응형