반응형
기존 클래스들의 작성은
아래 링크에 순차적으로 작성되어있다.
● 회원관리 예제 - 백엔드 개발
개발한 기능을 실행해서 테스트할 때
자바의 main 메서드를 통해서 실행하거나, 웹 애플리케이션의 컨트롤러를 통해서 해당 기능을 실행한다.
이러한 방법은 준비하고 실행하는데 오래 걸리고,
(system.out.println() 으로 다 된다!!)
반복 실행하기 어렵고 여러 테스트를 한번에 실행하기 어렵다는 단점이 있다.
자바는 JUnit이라는 프레임워크로 테스트를 실행해서 이러한 문제를 해결한다.
테스트 케이스 작성은 이전 포스팅에서 다룬
회원 서비스 개발에서 회원 가입과 중복회원 검사를 구현하고자 한다.
https://healthdevelop.tistory.com/entry/spring14
● 테스트 케이스 작성
MemberServiceTest.java
package hello.hellospring.service;
import hello.hellospring.domain.Member;
import hello.hellospring.repository.MemoryMemberRepository;
import org.assertj.core.api.Assertions;
import org.junit.jupiter.api.AfterEach;
import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.Test;
import java.util.Optional;
import static org.assertj.core.api.Assertions.assertThat;
import static org.junit.jupiter.api.Assertions.*;
class MemberServiceTest {
MemberService memberService;
MemoryMemberRepository memberRepository;
// test 수행전에
@BeforeEach
public void beforeEach() {
memberRepository = new MemoryMemberRepository(); // memberRepo 하나 생성
memberService = new MemberService(memberRepository); // 위 repo를 service의 Repo와 공유
}
@AfterEach
public void afterEach() {
memberRepository.clearStore();
}
@Test
void 회원가입() {
//given
Member member = new Member();
member.setName("hello");
//when
Long savedId = memberService.join(member);
//then
Member findMember = memberService.findOne(savedId).get();
assertThat(member.getName()).isEqualTo(findMember.getName());
}
@Test
public void 중복_회원_예외() {
//given
Member member1 = new Member();
member1.setName("spring");
Member member2 = new Member();
member2.setName("spring");
//when
memberService.join(member1);
// memberService.join(member2) 이 로직을 실행할건데,IllegalStateException.class 이 예외가 발생해야해
IllegalStateException e = assertThrows(IllegalStateException.class, () -> memberService.join(member2));
assertThat(e.getMessage()).isEqualTo("이미 존재하는 회원입니다.");
/* try-catch 방법
try {
memberService.join(member2);
fail();
} catch (IllegalStateException e){
assertThat(e.getMessage()).isEqualTo("이미 존재하는 회원입니다.");
}
*/
//then
}
@Test
void findMembers() {
}
@Test
void findOne() {
}
}
※ 중복_회원_예외를 보면
이름이 같은 두 회원을 생성하고, member1을 먼저 join(가입)시켰다.
그 후에 같은 이름을 가진 member2를 가입시킬 때,
assertThrows 메소드를 통해
memberservice에서 작성한 중복일 때에 예외(IllegalStateException)가 발생한다면
service에서 작성한 예외처리 메시지가 serviceTest에서 작성한 예외처리 메시지와 같은지 비교한다.
테스트를 수행해보면,,,
정상적으로 테스트 동작이 완료되었다.
반응형