주니어 개발자 성장기

3. Test Case 작성 본문

Spring/입문

3. Test Case 작성

Junpyo Lee 2022. 6. 30. 22:27

@Test

public void function(){

~~

}

@Test
void 회원가입() {
    //given
    Member member = new Member();
    member.setName("spring");

    //when
    Long saveId = memberService.join(member);

    //then
    Member findMember = memberService.findOne(saveId).get();
    assertThat(member.getName()).isEqualTo(findMember.getName());
}

 

-> 한 개의 테스트에 해당한다. @Test 어노테이션을 가진 메서드들은 순서에 상관없이 한 번씩 실행된다.

 

 

 

@AfterEach

public void afterEach(){

~~~

}

@AfterEach
public void afterEach(){
    memberRepository.clearStore();
}

-> 각 테스트 메서드가 실행되고 나서 한 번씩 실행되게 하는 어노테이션으로

각 메서드 간에 독립성을 유지하기 위해 상태를 초기화하려고 쓰인다.

 

 

@BeforeEach

이 어노테이션은 Test 시행 전마다 실행되게 할 때 쓰인다.

@BeforeEach
public void beforeEach() {
    memberRepository = new MemoryMemberRepository();
    memberService = new MemberService(memberRepository);
}

 

 

주석의 사용

    //given

    //when

    //then

초보자의 경우는 해당 주석을 사용하면서 테스트 메서드를 작성하는 것이 도움된다.   <- 안맞는 상황도 있다.

 

*테스트의 경우 한글로 써도 상관이 없다.(어차피 빌드할 때 제외되기 때문)

@Test
void 회원가입() {
    //given
    Member member = new Member();
    member.setName("spring");

    //when
    Long saveId = memberService.join(member);

    //then
    Member findMember = memberService.findOne(saveId).get();
    assertThat(member.getName()).isEqualTo(findMember.getName());
}

 

(22/07/03 추가)

@SpringBootTest

Test를 실행할 때 Spring 서버를 띄우고 Test를 한다.

Config에 미리 지정한 스프링 빈이 스프링 컨테이너에 등록된 상태로 테스트를 수행한다.

 

@Transactional

앞서 말한 @AfterEach, @BeforeEach를 사용할 필요가 없게 만들어 주는 어노테이션으로

테스트 케이스에 이 어노테이션이 있으면 테스트 시작 전에 트랜잭션을 시작하고,

DB에 commit(쿼리의 결과를 DB에 반영하는 것)이 일어나기 전에 roll back해준다.

 

 

1. 순수한 자바 코드로하는 테스트

 given when then 라는 작은 단위로 나누어서 하는 테스트로서,

더 좋은 테스트일 확률이 높다.

이 방법으로 훈련하는 것이 더 좋다.

 

 

2. 스프링 컨테이너를 띄워서 하는 테스트 - 스프링 통합 테스트

상황에 따라서 필요할 때도 있지만, 순수한 자바 코드로 하는 테스트로 훈련하는 것이 바람직하다.

'Spring > 입문' 카테고리의 다른 글

6. AOP란?  (0) 2022.07.05
5. Jdbc의 비교  (0) 2022.07.05
4. 스프링 빈 등록  (0) 2022.07.01
2. 인텔리제이 단축키, 편의 명령어  (0) 2022.06.30
1. 웹 개발 기초  (0) 2022.06.27