-

[스프링 부트 Step 8] - 회원 레포지토리 테스트 케이스 본문

백엔드 기술 정리/스프링 부트

[스프링 부트 Step 8] - 회원 레포지토리 테스트 케이스

흣차 2021. 12. 27. 22:18
728x90
반응형

계속 이어서 테스트 케이스를 작성해봅시다.

지난 번에 테스트한건 save() 메서드에 대해서 테스트 해보았습니다.

이번엔 findByName()메서드를 한 번 테스트 해봅시다.

마찬가지로 save()메서드 아래에 findByName()메서드를 만들어서 연습을 해봅시다.

똑같이 test 어노테이션을 걸겠습니다.

그리고 여기서 꿀팁이 있는데, Shift + F6을 누르시면 아래 메서드의 메서드명만 바꿀 수 있습니다.

손쉽게 member2로 바꾸고 setName에는 22222를 넣어봅시다.

이렇게하면 11111이라는 회원과 22222라는 회원이 가입이 된겁니다.

이렇게 입력하면 result에 11111이라는 회원을 찾아서 꺼내옵니다.

그 다음에 

이렇게 입력하고 돌리면 

findByName()에 정상적으로 녹색불이 뜨지요?

그럼 살짝 값을 바꾸어볼게요.

만약 22222를 찾는지도 보겠습니다.

어라 이런 결과가 나오네요.

22222는 여기서 result에 담아오지만 이 result는 member2일 것입니다.

그런데 비교하는 대상이 member1이므로 당연히 에러가 나는 것입니다.

이런식으로 test 프레임워크를 통해 테스트하는 경우도 살펴보았습니다.

테스트 케이스의 장점은 여러 테스트 케이스를 병렬적으로 수행할 수 있습니다.

참 편리한 기능이지요? 

마지막으로 findAll()도 테스트해봅시다.

member1과 member2의 이름을 각각 오늘이... 크리스마스니까 merry christmas라고 지어봅시다.

그리고 repository에 member1과 member2를 넣어주고 repository를 모두 찾는 메서드인 findAll()을 시행한 것을 result에 담습니다.

이후

요렇게 입력해줍시다.

이렇게 입력하면 result의 size()인 크기가 2가 되는지 확인할 수 있습니다.

우린 member1과 member2 총 2개를 넣었기 때문에 당연히 이 테스트는 통과해야할 것입니다.

결과는 어떤가요?

통과되네요!

근데 지금까지는 각 메서드에 대해서 실험을 해보았지만 전체 테스트를 실행하면 여전히 변수에 들어가는 값이 중첩이 될 수가 있습니다.

그래서 테스트가 끝나고 나면 데이터를 깔끔하게 정리해줄 필요가 있습니다.

자 그래서 어떻게 하냐면 

제일 위에 클래스 내부에

다음과 같이 작성해줍니다.

이 clearStore를 대뜸 실행한다했는데 이건 어디다 쓰냐면 자바의 MemoryMemberRepository클래스로 이동하여서 

이렇게 작성해줍니다.

이렇게 입력하시면 테스트할 때마다 데이터가 초기화 되고 의존관계 없고 순서에 상관없이 실행할 수 있습니다.

그로 인해 하나의 테스트가 끝날 때마다 공용 데이터를 지운 상태로 실행할 수 있습니다.

 

자 처음으로 테스트 케이스 작성을 살펴봤습니다.

테스트 케이스 작성만 해도 사실은 상당히 깊은 내용입니다만 제가 해본건 MemoryMemberRepository를 개발 후 테스트 케이스를 작성했습니다.

그런데 먼저 테스트 케이스를 작성하고 메모리멤버리포지토리를 작성할 수도 있습니다.

즉, 순서를 뒤집어서 먼저 검증할 수 있는 틀을 만들고 개발을 한다는 의미를 테스트 주도 개발이라고 해서 

TDD 라고도 합니다. (테스트를 먼저 만들고 개발)

우리가 한건 개발 하고 나서 테스트를 돌려본 것입니다. (이런게 있다라고 알고 있음 좋아요)

 

자 그럼 의문이 드실거에요.

테스트 케이스가 하나만 있으면 이렇게 하면 좋은데 여러 개 있을 땐 어떻게 하면 좋을까요?

이것을 우클릭하여 빌드를 하거나 Ru tests in ~ 이걸 누르셔서 진행하시면 되겠습니다.

테스트 코드 없이 개발하는건 혼자 개발하는건 가능하겠지만 여럿이서 개발할 경우에는 몇 만라인~ 몇십만 라인으로 개발하는건 테스트 코드 없이는 문제가 정말 많이 발생합니다.

그래서 테스트 코드 관련해서는 꼭 깊이 있게 공부하는 것이 좋습니다.

감사합니다.

 

728x90
반응형
Comments