본문 바로가기

Java

spring / 회원 repository test case 작성

 

domain은 DTO 

repository는 DAO 인듯 하다.

 

domain에 Member라는 객체 생성(회원정보 - id, name)

repository는 memberRepository를 interface로 만들어서 memoryMemberRepository가 implements 해서 사용

 

 

 

 

 

 

새로 배운것


1. Optional 객체

이러한 Optional 객체를 사용하면 예상치 못한 NullPointerException 예외를 제공되는 메소드로 간단히 회피할 수 있습니다. 즉, 복잡한 조건문 없이도 널(null) 값으로 인해 발생하는 예외를 처리할 수 있게 됩니다.

(출처 | http://tcpschool.com/java/java_stream_optional)

Optional.ofNullable(store.get(id))

: null인 경우 client쪽에서 사용가능 

 

2. return시 List 반환을 많이 함

회원정보를 key, value로 보관하는 map 타입을 사용하였는데, 

전체 회원정보를 찾는 method 내에서 List로 반환하는 상황이 있었음 

- 이는 java 실무에서 loop 돌리기 편하기 위해 list 반환을 많이 사용한다고 함

 

3. Test 케이스

java 에서는 JUnit 이라는 프레임워크로 테스트를 많이 실행한다.

main 메서드나, controller로 하기엔 시간이 걸리고, 반복실행이 어렵기 때문에

 

- 해당부분은 국비 공부할때 전혀 알지 못했던 부분이다.

(main폴더에서 만든걸 test 폴더에서 test 하면서 사용한다.  test 폴더는 gradle에서 프로젝트 생성시 자동 지원함)

 

 

public class MemoryMemberRepositoryTest { 

    MemoryMemberRepository repository = new MemoryMemberRepository();
    
    
    @AfterEach
    public void afterEach(){
        repository.clearStore(); //store.clear(); 
    }
    
    @Test 
    public void 메소드1(){}
    
    @Test 
    public void 메소드2(){}
    
    @Test 
    public void 메소드3(){}

    
 }

다음과 같이 Test 폴더에서 main 에 있는 repository를 객체로 사용해서 test를 한다.

 

- @Test : test 메소드 annotation 

- @AfterEach : 각 method가 끝날때마다 동작하는 함수 (callback method)

                    test는 서로 의존관계 없이 테스트가 이루어져야함으로 

 

 

 

 

4. 값이 같은지 확인하는 방법 3가지

1. 비교연산자로 console에서 비교값 확인

System.out.println("result =" + (result == member));

  soutv 단축어 사용

 

 

 

2. Assertions.assertEquals 객체가 expected, actual 일치함을 확인

 

   assertEquals(expected, actual)

Assertions.assertEquals(member, result);

 true의 경우 아무것도 뜨지 않고(초록색) / error, false의 경우 terminal에 에러가 뜸

 

 

 

3. Assertions.assertThat

 

  assertThat(actual, is(expected));

Assertions.assertThat(member).isEqualTo(result);

   assertEquals의 경우 expected, actual 순서 헷갈릴때 많지만 이는 명확하게 사용가능

  (참고 | https://jongmin92.github.io/2020/03/31/Java/use-assertthat/)

 

 

 

 

5. Test가 이루어지는 순서

 

  1) 개발 후 테스트

  2) 테스트 후 개발 : TDD (테스트 주도 개발)

 

 

 

 

그리고 나는 람다식을 잘 모른다 😥 

이 부분은 따로 책으로 공부해야할듯

 

 

출처 | 인프런 / 스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술(김영한)

https://www.inflearn.com/course/%EC%8A%A4%ED%94%84%EB%A7%81-%EC%9E%85%EB%AC%B8-%EC%8A%A4%ED%94%84%EB%A7%81%EB%B6%80%ED%8A%B8#

반응형