[Spring 공부일지] Spring Test 작성방법

최원석·2024년 7월 30일

Spring 공부

목록 보기
3/5

Test

Spring 으로 서버를 개발하다 보면 짠 코드가 설계한 대로 작동하는지 확인이 필요하다.

그럴 때 필요한 것이 Test이다.

Spring 의 구조는 아래와 같이 이루어져 있다.

Src 
ㄴ main
ㄴ test

main은 실질적으로 코드를 작성해 개발하는 공간이고

test는 main에서 작성한 코드가 제대로 작동하는지 확인하는 공간이다.

Junit

자바 단위테스트 프레임워크

❓ 단위 테스트 작성한 코드가 의도대로 작동하는지 알아보기 위해 작은 단위로 테스트

주요 메소드

  • assertEquals(expected, actual) : 객체들끼가 같은 값을 가지는지 확인한다.
    • assertEquals(expected, actual, [ 오차 범위 ])
public class MemoryMemberRepositoryTest {
    MemoryMemberRepository repository = new MemoryMemberRepository();

    @Test
    public void save(){
        Member member = new Member();
        member.setName("Spring");

        repository.save(member);

        Member result = repository.findById(member.getId()).get();
        Assertions.assertEquals(member, result);
    }
}
  • assertArrayEquals( expected, actual ) : 배열들끼리 일치하는지 확인한다.
  • assertsame( expected, actual ) : 같은 객체인지 확인
  • assertNull( actual ) : 객체가 Null 인지 확인

Annotation

  • @Test : 메소드 위에 선언, 테스트 메소드임을 나타냄
  • @Ignore : 해당 어노테이션이 선언되면 테스트 메소드는 실행되지 않음
  • @BeforeEach : 테스트 메소드의 순서를 지정하는 어노테이션으로 모든 테스트 메소드가 실행되기 전에 실행됨
  • @AfterEach : 테스트 메소드의 순서를 지정하는 어노테이션으로 모든 테스트 메소드가 실행된 후에 실행됨
  • @Beforeall : 메서드가 포함되어 있는 class가 초기화 될 때 한번만 수행 → static 선언
  • @Afterall : 메서드가 포함되어 있는 class의 메서드를 모두 실행시킨 후 한번 만 수행 → static 선언

AssertJ

Junit의 테스트 코드에 사용되어 가독성과 편의성을 높여주는 라이브러리

impot
import org.junit.jupiter.api.Test;
import static org.assertj.core.api.Assertions.*;

메소드

AssertJ의 코드의 시작은 assertThat()으로 시작

assertThat() 은 연쇄적으로 메소드들을 호출해 테스트코드를 작성할 수 있다.

ex)

assertThat(actual).isNotEmpty().isEqualTo(expected);
  • AssertJ 공식 웹페이지

org.assertj.core.api package summary - assertj-core 3.26.3 javadoc

Test 코드 작성 방법

Test class

Test class 같은 경우에는 “Test 하고자 하는 class 이름” + “Test “으로 class 명을 작성한다.

단축키를 사용하면 test class가 바로 생성된다.

⚙ 단축키 : Shift + Command + T

BDD

Behavior Deiven Development

테스트 코드를 작성할 때에는 BDD스타일인 given, when, then을 따라 작성하도록 하자

Given

  • 어떤 상황이 주어졌을 때
  • 대상에서 주어진 조건
  • 동작하기 위한 환경

when

  • 대상에게 가해진 상태
  • 대상에게 주어진 어떠한 조건
  • 상태를 변경시키기 위한 환경

then

  • 앞선 과정들의 결과

0개의 댓글