728x90
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/dashboard
📌 테스트 케이스 작성 방법
- 자바는 JUnit이라는 프레임워크로 테스트를 싱행해서 테스트를 빠르고 한번에 싱행할 수 있도록 해 준다.
- 패키지를 동일하게 만들어주고 클래스명은 테스트하려는 파일 명 +Test를 붙여준다.
import org.junit.jupiter.api.Test;
//굳이 퍼블릭 쓰지 않아도되서 삭제
class MemoryMemberRepositoryTest {
MemberRepository repository = new MemberRepository();
//@Test를 붙여주면 실행시켜줄 수 있다.
@Test
public void save(){
//실행하면 그냥 save()메서드가 실행됨.
}
}
- 해당 코드를 실행하면 아래와 같이 뜬다.
🔸 org.junit.jupiter.api 사용
@Test
public void save(){
//실행하면 그냥 save()메서드가 실행됨.
//member에 이름 지정
Member member = new Member();
member.setName("김아무개");
//이름 repository에 저장
repository.save(member);
//repository에서 member.Id를 가져온다.
Member result = repository.findById(member.getId()).get();
//결과가 같은지 확인
//왼쪽은 기대하는거, 오른쪽은 원하는 값
Assertions.assertEquals(member, result);
}
- 성공시 초록불
- 실패시 빨간불
기대했던 건 hello.hellospring.domain.Member@1b083826 인데 실제로는 null이 들어왔다는 뜻
🔸 org.assertj.core.api 사용
@Test
public void save(){
//실행하면 그냥 save()메서드가 실행됨.
//member에 이름 지정
Member member = new Member();
member.setName("김아무개");
//이름 repository에 저장
repository.save(member);
//repository에서 member.Id를 가져온다.
Member result = repository.findById(member.getId()).get();
Assertions.assertThat(member).isEqualTo(result);
}
- 아래와 같이 설정하면 더 간편하게 사용 할 수 있다.
-여러개의 테스트케이스를 만들기 위해 메서드를 복사했을 때 같은 이름을 한번에 바꾸는 법 : shift + F6
- 테스트 케이스의 장점은 한번에 테스트케이스를 돌릴 수도 있다는 점이다.
- 리스트 형식을 테스트 할 때는 list형식으로 받아서 .size로 확인
@Test
public void findAll() {
Member member1 = new Member();
member1.setName("이아무개");
repository.save(member1);
Member member2 = new Member();
member2.setName("최아무개");
repository.save(member2);
List<Member> result = repository.findAll();
assertThat(result.size()).isEqualTo(2);
}
- 모든 테스트는 순서와 상관없이 따로 돌도록 해야하지만 findAll()이 먼저 실행되면 오류 발생 → 테스트가 한번 끝나면 Clear 해줘야함.
📌 테스트 케이스 Clear 메서드 만들기
- MemoryMemberRepository 에서 clearstore()메서드 추가
public void clearStore(){
store.clear();
}
- MemoryMemberRepositoryTest 에서 @AfterEach 를 이용하여 메서드 실행 후 마지막에 실행 될 메서드 생성
class MemoryMemberRepositoryTest {
//MemoryMemberRepository 할 것이기 떄문에 MemverRepository -> MemoryMemberRepository 변경
MemoryMemberRepository repository = new MemoryMemberRepository();
//메서드가 실행 된 후 마지막에 실행해주는 콜백 메서드
@AfterEach
public void afterEach(){
repository.clearStore();
}
- 위와 같이 설정하면 순서와 상관 없이(의존관계 없이) 테스트가 가능해진다.
- 만약 테스트케이스를 먼저 만들고 구현하는 방식으로 (역순으로) 진행 시 테스트 주도 개발이라고 함.(TTD)
728x90
'Java > [인프런] Spring 강의' 카테고리의 다른 글
[SpringBoot] intellij Spring Boot 단축키 (수정중) (0) | 2023.08.16 |
---|---|
[SpringBoot] #11 - 회원 서비스 개발 (0) | 2023.08.15 |
[SpringBoot] #09 - 회원 도메인과 리포지토리 만들기 (0) | 2023.08.10 |
[SpringBoot] #08 - 비즈니스 요구사항 정리 (0) | 2023.08.10 |
[SpringBoot] #07 - API (0) | 2023.08.10 |