본문 바로가기
728x90
반응형

Spring136

JUnit 테스트의 생명주기를 알아보자 JUnit의 생명주기를 확인해본다. @Test : 테스트 코드를 포함한 메서드를 정의한다. @BeforeAll : 테스트를 시작하기 전에 호출되는 메서드를 정의한다. @BeforeEach : 각 테스트 메서드가 실행되기 전에 동작하는 메서드를 정의한다. @AfterAll : 테스트를 종료하면서 호출되는 메서드를 정의한다. @AfterEach : 각 테스트 메서드가 종료되면서 호출되는 메서드를 정의한다. 아래 전체 코드를 통해 확인해보자. public class TestLifeCycle { @BeforeAll static void beforeAll() { System.out.println("## BeforeAll Annotation 호출 ##"); System.out.println(); } @AfterAl.. 2022. 9. 11.
application.yml 에서 JPA 설정하기 스프링부트 및 JPA 를 연습할 때, 프로젝트를 생성하면서 항상 구글에 찾아서 작성하지 않으려고, 따로 글을 작성했다. yml 에 적용할 때는 띄어쓰기가 중요하고 , properties 랑 적용코드가 조금 다르다. application.yml 설정 // mysql 연결 및 jpa 설정 spring: datasource: driver-class-name: com.mysql.cj.jdbc.Driver // ? 앞에 shop 은 DB 이름을 작성 url: jdbc:mysql://localhost:3306/shop?serverTimezone=Asia/Seoul username: root password: 1234 jpa: properties: hibernate: show_sql: true // DB 에 날리는 .. 2022. 9. 11.
Spring Security H2 DB 접근하기 스프링 시큐리티를 이용하면 H2 데이터베이스에 바로 접근할 수 없다. MySQL 등을 처음부터 사용할 수 있지만, 개발의 편의성을 고려해서 H2 DB 를 사용한다면 설정방법을 알아야 하기때문에, 간단히 정리했다. 아래 내용으로 된 블로그를 많이봤는데 Deprecated 되어서 더이상 사용할 수 없었다. new XFrameOptionsHeaderWriter( new WhiteListedAllowFromStrategy(Arrays.asList("localhost")) // 여기! ) 1. h2-console 로 시작하는 접근을 모두 허용 2. csrf 비활성화 3. http 헤더 frameOptions 비활성화 참고 https://malwareanalysis.tistory.com/160 스프링부트 h2인메모.. 2022. 9. 2.
ResponseEntity<T> 정리가 잘 되어있는 블로그 참고 https://a1010100z.tistory.com/106 [Spring] ResponseEntity는 왜 쓰는 것이며 어떻게 쓰는걸까? 기존 내 개인 프로젝트 코드의 RestController 반환값은 모두 Object 타입이었다. 하지만, 일반적인 API는 반환하는 리소스에 Value만 있지 않다는 것을 모두 알고 있을 것이다. 당장 생각나는 것으로는 a1010100z.tistory.com 내코드 예시 @PostMapping("/users") public ResponseEntity createUser(@RequestBody User user) { User savedUser = userDaoService.save(user); return ResponseEntity.st.. 2022. 8. 31.
assertThrows 예외 테스트 예외 처리 테스트 관련 메서드 assertThrows Assertions 에는 2가지가 있다. 해당 메서드는 junit.jupiter 에 내장되어있다. 사용방법은 아래와 같다. 예외타입을 적어주고 람다식으로 발생조건을 적어주면 된다. 필요 파라조건이 적혀있어서, 모르는건 검색해가면서 작성하면 된다. 나는, 회원가입 중복 테스트할 때 사용했다. 2022. 8. 21.
assertThatThrownBy 테스트 Junit5 에서는 예외테스트를 진행할 때 try - catch 보다 해당 메소드를 많이 사용하는 것 같다. 가독성이 좋아서 그런것 같기도하다. 아주 간단한 예제이지만, 혼자 구글링하면서 적용했다는 것에 칭찬하며, 혹시 다음에 까먹을까봐 기록해둔다. JPA 실전 강의에서 나온 entity 서비스이다. 재고가 0 밑으로 떨어지면 NotEnoughStockException 예외를 발생시키면서, "need more stock" 이라는 메세지를 보낸다. assertThatThrownBy 의 문법은 람다를 사용한다. assertThatThrownBy(() -> item.removeStock(11) ) .isInstanceOf(NotEnoughStockException.class) .hasMessage("need .. 2022. 8. 17.
테스트 케이스 설정 방법 - Memory DB 사용하기 테스트 케이스를 위한 설정 테스트는 케이스 격리된 환경에서 실행하고, 끝나면 데이터를 초기화하는 것이 좋다. 그런 면에서 메모리 DB를 사용하는 것이 가장 이상적이다. 추가로 테스트 케이스를 위한 스프링 환경과, 일반적으로 애플리케이션을 실행하는 환경은 보통 다르므로 설정 파일을 다르게 사용하자. 다음과 같이 간단하게 테스트용 설정 파일을 추가하면 된다. 테스트 파일은 원래 기존 application.yml 의 설정에 따라 실행된다.만일, 아래 사진처럼 test 에 따로 만들어준다면 우선순위가 바뀌기 때문에 test 폴더 안의 설정에 따르게 된다. ( DB 기본설정은 메모리DB 이다 ) 2022. 8. 17.
@Profile 활용하기 현업에서는 환경을 다양하게 해서 해당 환경에서만 동작하는 빈을 만드는 경우가 있다. @Profile를 활용해서 내가 사용하고 싶은 빈만 사용할 수 있다. 사용방법은 아래와 같다. 어떤 환경에서 동작시키고 싶은 클래스 위에 @Profile 을 붙여준다. 보통 sandbox(테스트환경) / beta(실운영과 가장비슷) / production(실운영) 으로 나뉜다고 한다. 붙여진 프로파일 환경으로 설정하는 방법이다. 환경변수에서는 spring.profiles.active=이름 을 붙여주면된다. 이름에는 @Profile("이름") 에 들어간 명칭과 같은 이름을 붙여주면된다. 2022. 7. 21.
@JsonIgnore 와 @JsonIgnoreProperties @JsonIgnore 와 @JsonIgnoreProperties 클라이언트에게 JSON 데이터를 넘겨줄 때, 해당 객체의 값을 보이지 않게 하는 어노테이션이다. 예를들어, GET 요청으로 User 정보를 요청했는데, 비밀번호나 주민등록번호 등 보안에 민감한 사항을 제외하고 싶을 때 사용한다. @JsonIgnore 사용해서 클라이언트에게 응답할 때 제외하고 데이터를 보내주려고 한다. 비밀번호와 주민등록번호 객체를 추가해주었다. 아직 데이터베이스를 연결하지 않아서... 초기실행시 static 블럭을 통해 3명의 유저를 추가해주었었는데, 생성자에 비밀번호와 주민등록 번호도 같이 넣어줬다. 포스트맨에서 GET 요청으로 모든 유저정보를 요청해보았다. JSON 형식으로 된 응답 데이터를 보면 @JsonIgnore .. 2022. 7. 8.
728x90
반응형