test 17

testcode 작성 시 description

testcode 작성 시 메소드명만으로는 자세하게 구별할수가 없다. 따라서 설명 및 이름 같은 것을 붙여주어 구분하기 쉽게 한다. junit4 사용 시 : junit4는 설명을 달기 위해서 따로 annotation을 만들어야한다. package me.whiteship.restapi.common; import java.lang.annotation.ElementType; import java.lang.annotation.Retention; import java.lang.annotation.RetentionPolicy; import java.lang.annotation.Target; @Target(ElementType.METHOD) // 붙일수 있는 target은 메소드!! @Retention(Retentio..

JAVA 2022.07.11

[JAVA] API 구현 시 테스트 개발

@WebMvcTest MockMvc 빈을 자동 설정 해준다. 그냥 가져와서 쓰면 됨. 웹 관련 빈만 등록해준다. @MockMvc 스프링 MVC 테스트 핵심 클래스 웹 서버를 띄우지 않고도 요청을 처리하는 과정을 확인가능 → 컨트롤러 테스트용으로 자주 쓰임 테스트 내용 1. 입력값들을 전달하면 JSON 응답으로 201 값이 나오는지 확인 - Location 헤더에 생성된 이벤트를 조회할 수 있는 URI 담겨있는지 확인 - id는 DB에 들어갈 때 자동 생성된 값으로 나오는지 확인 @RestController @ResponseBody를 모든 메소드에 적용한 것과 동일 ResponseEntity를 사용하는 이유 응답코드, 헤더, 본문, 모두 다루기 편한 API Locatio..

JAVA 2022.06.02

폰켓몬

N 마리의 폰켓몬이 있으면 최대 N/2 마리를 데려갈수 있다. 이때 N마리중 중복이 포함되어있을수 있고 이때 가장 많은 종류의 폰켓몬을 데려갈 수있는 경우의 수를 반환하라. 어차피 중복되는 경우의 수는 빠져야하니까 배열의 중복을 없애야겠다고 생각했다. 또한 중복을 없애고 난 후의 배열의 크기가 최대 경우의 수와 같다고 생각했다. 주어진 N을 2로 나눈값의 갯수의 포켓몬만 데려갈수있다는 점에서 중복을 제거한 배열의 값의 사이즈 > N의 크기/2 의 값 이 되면 N의 크기/2가 최대 경우의 수라고 생각했다. import java.util.HashSet; import java.util.ArrayList; class Solution { public int solution(int[] nums) { int answ..

CT 2022.05.26

[TEST] Memory DB 사용

Memory DB는 오로지 테스트만 하고 외부 DB를 사용하지 않고 끝내고 싶을때, 테스트를 완전히 격리 된 환경에서 테스트 하기 위해서 사용한다. → JVM 안에서 메모리 모드로 띄우는거다. 테스트 코드 작성 시 운영의 설정파일과 따로 사용 하는 것이 좋다. 테스트 디렉토리 안에 resource 파일 생성 후 설정 파일(application.yml)을 생성하면, 테스트 코드가 실행 시에 그 설정파일을 참조한다. H2 Database Engine Using H2 Documentation Reference: SQL grammar, functions, data types, tools, API Features: fulltext search, encryption, read-only (zip/jar), CSV, ..

JAVA 2022.03.16

[JAVA] 결과조회(fetch)

fetch() : 리스트 조회, 데이터 없으면 빈 리스트 반환 fetchOne() : 단 건 조회 결과가 없으면 : null 결과가 둘 이상이면 : com.querydsl.core.NonUniqueResultException fetchFirst() : limit(1).fetchOne() fetchResults() : 페이징 정보 포함, total count 쿼리 추가 실행 fetchCount() : count 쿼리로 변경해서 count 수 조회 @Test public void resultFetch() throws Exception{ //given List fetch = jpaQueryFactory .selectFrom(member) .fetch(); Member fetchOne = jpaQueryFact..

JAVA 2022.03.14

[TEST] 예외 발생 테스트

만약 예외가 발생하는 코드를 테스트 할때 회원가입 중복 확인 테스트 진행 시 IllegalStateException (이미 존재하는 회원) 을 처리해주지 않으면 테스트 코드 실행 시 실패로 뜸 Test 어노테이션 옆에 excepted를 지정해주면 해당 exception 발생시에는 그냥 넘어갈 수 있다 @Test(expected = IllegalStateException.class) public void 중복_회원_예외() throws Exception{ //given Member member1 = new Member(); member1.setName("kim"); Member member2 = new Member(); member2.setName("kim"); //when memberService.joi..

JAVA 2022.03.08

[TEST] 날짜 자동 생성 테스트

test code 작성 중 문제 발생 [문제] createdDate 자동 생성 테스트 코드 작성 중 문제가 발생 → 테스트를 위해 우선 데이터를 삽입 후 날짜를 비교해야 하는데 날짜가 null로 삽입됨 [해결] BaseTimeEntity에 @EntityListeners(AuditingEntityListener.class) 을 이용해 JPA 청취 기능을 하는데 main함수가 있는 클래스에서 JPA 청취 가능을 시켜주지 않으면 사용이 불가하다. 따라서 기능 구현을 할 클래스에 @EnableJpaAuditing 어노테이션을 붙여주면 생성됨 package movie.finder.Repository; import movie.finder.domain.Movie; import movie.finder.repositor..

JAVA 2022.03.03