[spring] 섹션 3. 회원 관리 예제 - 백엔드 개발 > 비즈니스 요구사항 정리 및 테스트 케이스 작성

implements 
    option + enter

비즈니스 요구사항 정리
*클래스 생성

주의사항을 꼭 잃어보시라

MemberService : 서비스 로직을 처리하는 클래스 
MemberRopository : 데이터베이스에 접근하여 데이터를 컨트롤 하는 클래스(인터페이스)
MemoryMemberRopository : MemberRopository(인터페이스)을 구체화 한 클래스

*프로젝트 트리

controller,domain,repository package

src > main > java  >hello.hellospring 경로 밑에 존재해야합니다.
*controller : view에서 호출하고자하는 함수를 정의합니다.
*service : 
*domain :  service에서 데이터베이스에게 데이터를 넘길때(혹은 받아올때) 사용하는 클래스
*repository : 데이터베이스와 연결하는 클래스

테스트 케이스 작성
*junit
생성한 기능을 테스트을 하기 위해선 "실행"해봐야하는데
"실행"해보려면 main함수에서 해당 함수를 호출해보거나, url을 통해 특정 페이지으로 
이동해서 button을 클릭해봐야하는게 아닌가 ... 이게 얼마나 번거로운 일인가 

그래서 spring-boot에는 테스트할 수 있는 기능을 제공한다.
test 파일의 위치를 확인하자




MemoryMemberRepositioy클래스의 함수기능을 테스트하기 위해 테스트용 클래스를
만들어야 한다.

이때 "(테스트 대상 클래스의)이름 + Test"의 방식으로 클래스 이름을 설정한다.

그리고 (당연하게도?) 테스트 하고자하는 클래스의 인스턴스를 생성한다.



테스트 하고자 하는 함수에 "@Test"어노테이션을 붙힌다.
그리고 테스트 함수가 모두 작성 완료 되었다면 
업로드 중: 총 132527바이트 중 132527바이트가 업로드되었습니다.

함수의 플레이 버튼을 클릭하여 "Run 'MemoryMemberRepositi....' 을 실행시키면 된다.



테스트를 진행하는데 그 결과를 System.out.println(...)으로 일일히 확인할 수 없는 노릇아닌가

그래서 Assertions.assartEquals( 기대되는 값, 테스트를 통해 얻은 값 )함수를 사용한다
현업에서는 Assertions.assertThat( 기대되는 값 ).isEqulasTo( 테스트를 통해 없은 값)
함수도 많이 사용함으로 알아두자.

//////////////////////
Option + Enter 키를 눌러 import class을 선택할 수 있다

//////////////////////

*테스트 실패하였을때 
test fail
테스트에 성공하였다면, log창에 아무것도 표시되지않겠지만, 실패하였다면 위와 같이 빨간줄의 내용이 잔뜩 나온다.
내용을 해석해보자면, member 데이터를 예상하였지만, 실제 들어온 값은 null임으로 
테스트에 실패했다는 내용이다.

*테스트 함수를 한꺼번에 수행하였다면,
 (테스트(함수 실행 순서는 보장할 수 없어요.

 그래서 메모리를 클리어을 해줘야해요!! 

클리어 작업을 수행하기 위해선 "@afterEach"어노테이션을 사요한다.
@afterEach annotation


@AfterEach 어노테이션은 @Test 어노테이션이 붙어있는 (테스트용)함수를 실행 한 뒤에 실행되는 함수를 뜻한다.

말하자면
@Test          ->          @AfterEach            ->        @Test           ->  @AfterEach
method 1()                 afterEachMethod()              method 2()          afterEachMethod()
순서로 실행된다..!! 

댓글

이 블로그의 인기 게시물

[sql] 테이블 생성