[spring] 섹션 3. 회원 관리 예제 - 백엔드 개발 > 비즈니스 요구사항 정리 및 테스트 케이스 작성
implements
option + enter
비즈니스 요구사항 정리
*클래스 생성
| 주의사항을 꼭 잃어보시라 |
MemberService : 서비스 로직을 처리하는 클래스
MemberRopository : 데이터베이스에 접근하여 데이터를 컨트롤 하는 클래스(인터페이스)
MemoryMemberRopository : MemberRopository(인터페이스)을 구체화 한 클래스
MemberRopository : 데이터베이스에 접근하여 데이터를 컨트롤 하는 클래스(인터페이스)
MemoryMemberRopository : MemberRopository(인터페이스)을 구체화 한 클래스
*프로젝트 트리
| controller,domain,repository package |
src > main > java >hello.hellospring 경로 밑에 존재해야합니다.
*controller : view에서 호출하고자하는 함수를 정의합니다.
*service :
*domain : service에서 데이터베이스에게 데이터를 넘길때(혹은 받아올때) 사용하는 클래스
*repository : 데이터베이스와 연결하는 클래스
*controller : view에서 호출하고자하는 함수를 정의합니다.
*service :
*domain : service에서 데이터베이스에게 데이터를 넘길때(혹은 받아올때) 사용하는 클래스
*repository : 데이터베이스와 연결하는 클래스
테스트 케이스 작성
*junit
생성한 기능을 테스트을 하기 위해선 "실행"해봐야하는데
"실행"해보려면 main함수에서 해당 함수를 호출해보거나, url을 통해 특정 페이지으로
이동해서 button을 클릭해봐야하는게 아닌가 ... 이게 얼마나 번거로운 일인가
이동해서 button을 클릭해봐야하는게 아닌가 ... 이게 얼마나 번거로운 일인가
그래서 spring-boot에는 테스트할 수 있는 기능을 제공한다.
MemoryMemberRepositioy클래스의 함수기능을 테스트하기 위해 테스트용 클래스를
만들어야 한다.
이때 "(테스트 대상 클래스의)이름 + Test"의 방식으로 클래스 이름을 설정한다.
만들어야 한다.
이때 "(테스트 대상 클래스의)이름 + Test"의 방식으로 클래스 이름을 설정한다.
그리고 (당연하게도?) 테스트 하고자하는 클래스의 인스턴스를 생성한다.
테스트 하고자 하는 함수에 "@Test"어노테이션을 붙힌다.
그리고 테스트 함수가 모두 작성 완료 되었다면
테스트를 진행하는데 그 결과를 System.out.println(...)으로 일일히 확인할 수 없는 노릇아닌가
그래서 Assertions.assartEquals( 기대되는 값, 테스트를 통해 얻은 값 )함수를 사용한다
현업에서는 Assertions.assertThat( 기대되는 값 ).isEqulasTo( 테스트를 통해 없은 값)
함수도 많이 사용함으로 알아두자.
함수도 많이 사용함으로 알아두자.
//////////////////////
| Option + Enter 키를 눌러 import class을 선택할 수 있다 |
//////////////////////
*테스트 실패하였을때
| test fail |
내용을 해석해보자면, member 데이터를 예상하였지만, 실제 들어온 값은 null임으로
테스트에 실패했다는 내용이다.
*테스트 함수를 한꺼번에 수행하였다면,
(테스트(함수 실행 순서는 보장할 수 없어요.
그래서 메모리를 클리어을 해줘야해요!!
(테스트(함수 실행 순서는 보장할 수 없어요.
그래서 메모리를 클리어을 해줘야해요!!
클리어 작업을 수행하기 위해선 "@afterEach"어노테이션을 사요한다.
@AfterEach 어노테이션은 @Test 어노테이션이 붙어있는 (테스트용)함수를 실행 한 뒤에 실행되는 함수를 뜻한다.
말하자면
@Test -> @AfterEach -> @Test -> @AfterEach
method 1() afterEachMethod() method 2() afterEachMethod()
@Test -> @AfterEach -> @Test -> @AfterEach
method 1() afterEachMethod() method 2() afterEachMethod()
순서로 실행된다..!!

댓글
댓글 쓰기