springboot (37) 썸네일형 리스트형 Spring Boot | Spring Security Debug 콘솔 출력하기 1. @EnableWebSecurity에서 설정하기 @EnableWebSecurity어노테이션에 debug설정을 true로 설정한다. (기본은 false) @Configuration @EnableWebSecurity(debug = true) public class SecurityConfig extends WebSecurityConfigurerAdapter { } debug 콘솔 출력을 활성화 한 후 애플리케이션을 실행해보면, 아래와 같이 콘솔이 출력된다. 민감한 정보를 포함하고 있으므로 실제로 배포할 때는 활성화 하지 말라는 내용.. 이렇게 코드상으로 설정해두면, 빌드할 때 마다 코드를 수정해야 하므로 번거로워지기 때문에 아래의 두 번째 방법을 사용하는 것이 좋다. 2. 설정파일 이용하기 (추천) 설정파.. Spring Boot | OAuth2 Google 로그인 스프링 부트와 AWS로 혼자 구현하는 웹 서비스 책을 참고하여 작성하였습니다. java11 Gradle 7.0.2 Spring Boot 2.5.0 build.gradle spring-boot-starter-oauth2-client를 사용한다. implementation 'org.springframework.boot:spring-boot-starter-oauth2-client' 구글에 프로젝트 등록 https://console.cloud.google.com/ 로 접속 후, 새 프로젝트를 생성한다. (이미 프로젝트 생성한 상태라 저렇게 되어있음.. 저 부분 클릭하면 모달창이 생성된다) 프로젝트 이름은 자유롭게 설정 API 및 서비스 > 사용자 인증 정보 (OAuth 동의 화면 부터 만들라고 할 것임..) 앱.. Spring Boot | REST Docs 적용하기 ( + build failed 해결.. ) Spring REST Docs? Asciidoctor를 사용해 RESTful 서비스에 대한 문서를 생성하도록 돕는다. Swagger vs REST Docs Swagger UI Spring REST Docs 실제 코드에 애노테이션을 추가하여 문서가 작성되는 방식 -> 가독성 측면에서 좋지 않을 수 있음 -> 하지만 적용하는 방법이 쉬움! 테스트 코드로 문서를 작성하는 방식 (테스트가 성공해야만 작성됨) -> 테스트 코드를 반드시 작성해야 함.. -> 약간의 진입 장벽이 있음 API를 테스트 해볼 수 있음! API 테스트 불가능 진짜 "문서" Swagger도 사용해봤지만, REST Docs가 더 좋다고 느꼈다.. 일단 문서 생긴게 더 마음에 들기도 하고...^^ REST Docs 적용하기! 우아한형제들 기술.. JUnit5 | multipart/formdata 전송 테스트 ( MockMultipartFile, @RequsetPart ) MockMultipartFile로 파일 업로드 POST 요청 테스트를 해보자! 1. TestClass 작성 보통 테스트할 클래스 명에 Test를 붙여 생성한다. @SpringBootTest를 이용한 통합테스트를 진행할 것임 @AutoConfigureMockMvc를 이용해 MockMvc 자동 설정 스프링 프로필을 설정해놓았다면, @ActiveProfiles로 사용하고자 하는 프로필을 꼭 명시할 것 @BeforeEach로 테스트 메서드 요청 전에 access_token을 발급 받아 초기화 함 -> OAuth2를 사용하는 경우에만 해당 @Slf4j @SpringBootTest @AutoConfigureMockMvc @ActiveProfiles(profiles = "local") public class Imag.. JUnit5 | Controller 테스트 하기 ( + OAuth2 ) 1. TestRestTemplate 이용하기 TestRestTemplate을 이용하기 위해서는 @SpringBootTest어노테이션과 webEnvironment설정이 필요하다. @SpringBootTest의 webEnvironment속성 설정을 RANDOM_PORT로 설정 @TestConstructor를 명시하여 생성자로 의존관계 주입 @ActiveProfiles에 사용할 프로필을 설정 (프로필 설정이 되어있지 않다면 생략) @Slf4j @SpringBootTest(webEnvironment = SpringBootTest.WebEnvironment.RANDOM_PORT) @TestConstructor(autowireMode = TestConstructor.AutowireMode.ALL) @ActivePr.. JUnit5 | @ExtendWith, MockMvc, @TestConstructor @ExtendWith JUnit 4의 @RunWith가 JUnit 5에서는 @ExtendedWith로 변경되었음 @SpringBootTest애노테이션에 포함되어 있기 때문에 둘다 명시할 필요는 없음 MockMvc Spring MVC 애플리케이션을 테스트 해볼 수 있게 도와줌 실제 서버의 실행 없이 요청하고 응답받아볼 수 있음 MockMvc과 WebApplicaionContext를 @Autowired애노테이션을 이용해 의존관계 주입하고, setup()메서드로 MockMvc를 초기화 한다. @BeforeEach애노테이션을 명시함으로써 테스트가 실행되기 전 setup()메서드가 실행되어 반복적으로 초기화 할 필요가 없다. @WebMvcTest public class HelloControllerTest { @A.. JUnit5 | @WebMvcTest와 @SpringBootTest 테스트 코드... 짜고싶어요 제발... @WebMvcTest @WebMvcTest는 Web Layer만 테스트할 때 사용 @WebMvcTest(ContollerClassName.class)로 특정 컨트롤러만 인스턴스화 하여 테스트하는 것도 가능 실제 연결이 생성되는 것은 아님 컨트롤러의 의존성은 @MockBean으로 모의 의존관계 생성 및 주입 MockMvc객체를 주입받아 해당 객체를 이용하여 테스트 진행 이렇게 테스트 클래스에 애노테이션을 붙여 사용한다. @WebMvcTest public class WebLayerTest { } 아래와 같이 컨트롤러에 의존관계가 설정되어 있다면, @RestContoller public class HelloController { @Autowired private Hell.. Spring Boot | 컨트롤러 테스트할 때 시큐리티 설정 해제 @WithMockUser가 안 돼서 몇 시간을 날렸다! 테스트코드 공부가 절실.. @WebMvcTest에서 제외할 필터를 설정하면 된다! excludeFilters설정을 통해 시큐리티 설정을 제외한다. @WebMvcTest(controllers = ImageController.class, excludeFilters = { @ComponentScan.Filter(type = FilterType.ASSIGNABLE_TYPE, classes = SecurityConfig.class) }) public class ImageControllerTest {@WithMockUser를 사용한다 @Test @WithMockUser public void 모든_이미지_조회() throws Exception {무야호... 이전 1 2 3 4 5 다음