Spring 입문 - 회원 리포지토리 테스트 케이스 작성

박경희·2023년 7월 25일
0

공부를 해보자

목록 보기
21/40

save test 코드 작성

회원 리포지토리 테스트 케이스 작성

개발한 기능을 실행해서 테스트 할 때 자바의 main 메서드를 통해서 실행하거나, 웹 애플리케이션의 컨트롤러를 통해서 해당 기능을 실행한다. 이러한 방법은 준비하고 실행하는데 오래 걸리고, 반복 실행하기 어렵고 여러 테스트를 한번에 실행하기 어렵다는 단점이 있다. 자바는 JUnit이라는 프레임워크로 테스트를 실행해서 이러한 문제를 해결한다.

그냥 이렇게 하면 save메소드가 실행된다.

이제 저장이 잘 되는지 test

 @Test
    public void save() {

        Member member = new Member();
        member.setName("spring"); // 멤머의 이름 세팅


        repository.save(member); // repository에 이 member를 save해줌.

        // 내가 저장한 멤버를 id로 찾아보며 검증.
		repository.findById(member.getId()).get();
    }

  • 맥 - command + option + v로 반환 타입을 확인해봄.
    => 반환 타입은 옵셔널이다. 옵셔널에서 값을 꺼낼 때는 get으로 꺼낼 수 있다.

  • get으로 바로 꺼내는게 좋은게 아니지만 test코드에서는 이렇게 해도 괜찮다.
    .get으로 값을 꺼낸 후 result에 넣어준다.

위의 과정을 거쳐 만들어진 코드

 @Test
    public void save() {

        Member member = new Member();
        member.setName("spring"); // 멤머의 이름 세팅


        repository.save(member); // repository에 이 member를 save해줌.

        // 내가 저장한 멤버를 id로 찾아보며 검증.
        Member result = repository.findById(member.getId()).get();
//        System.out.println("result = " + (result == member)); // 이렇게 확인해봐도 된다.
        Assertions.assertEquals(member, null);
    }
  • 이제 검증을 해야한다.
    => new에서 만든 member와 db에서 꺼낸거랑 똑같으면 참. (result가 db에서 꺼낸 멤버.)

그렇지만 이렇게 글자로 계속 볼수만은 없다!

이걸로 검증을 해보자.

  • Assertions.assertEquals ==>. 두 값이 같은지 비교해준다.
    -> 내가 기대하는건 처음 저장한 membe가 find했을 때 튀어나오는 값이랑 같은지!

-> 튀어나오는 것은 없지만 초록불로 잘 나오는걸 볼 수 있다.

테스트가 잘된게 맞나 확인해보기 위해 result값을 바꿔서 다시 테스트.

-> null값을 넣어서 확인해보니 빨간불이 나온다!
=> Expected(예상)은 이것인데 Actual(실제)는 null이다.

0개의 댓글