1. @BeforeEach와 @AfterEach 사용하기
모든 테스트는 순서가 보장 되지 않기 때문에 순서에 의존적으로 설계하면 절대 안된다. 예를 들어 이전 회원가입 테스트 메소드 내에서 생성한 사용자 정보를, 이후 로그인 테스트에서 사용하면 안된다.(로그인 테스트가 먼저 실행될 수도 있기 때문) 따라서 각 테스트 이후 혹은 이적에 진행해야할 것들을 @BeforeEach와 @AfterEach로 지정해준다.
@BeforeEach
public void beforeEach() {
memberRepository = new MemoryMemberRepository();
memberService = new MemberService(memberRepository);
}
@AfterEach
public void afterEach() {
memberRepository.clearStore();
}
2. 테스트 메소드 내부 로직
테스트 메소드 내부 코드를 작성할 땐 아래의 순서를 따르는 것을 추천한다.
- given : A가 주어짐
- when : A로 ~를 실행했을 때
- then : ~같은 결과가 나와야 함
@Test
void join() {
// given
Member member = new Member();
member.setName("hello");
// when
Long saveId = memberService.join(member);
// then
Member findMember = memberService.findOne(saveId).get();
assertThat(member.getName()).isEqualTo(findMember.getName());
}
+ 테스트는 정상 플로우보다 예외 상황이 훨씬 중요하다. -> 예외가 잘 발생하는지를 꼭 테스트해야 한다.
3. assertThat
assertThat은 assertEquals보다 더 직관적으로 사용할 수 있다.
import static org.assertj.core.api.Assertions.assertThat;
...
assertThat(member.getName()).isEqualTo(findMember.getName());
아래 링크에서 위 내용을 구현한 예제를 볼 수 있다.
반응형
'서버 > TDD' 카테고리의 다른 글
[TDD 공부-java] 3) 예외 처리 (0) | 2021.06.28 |
---|---|
[TDD 공부-java] 2) 테스트 코드 작성 순서 익히기 (0) | 2021.04.11 |
[TDD 공부-java] 1) intellij에서 JUnit 설정 및 간단한 테스트 코드 작성 (0) | 2021.04.07 |
[TDD 공부-java] 0) 어떻게 무엇을 공부할지 (0) | 2021.04.07 |