본문 바로가기

개발/Spring Boot

Spring Boot [3]

📌테스트 코드(TDD : Test driven development, 테스트 주도 개발)

- test 디렉터리 에서 작업한다.
- 테스트 코드를 작성하여 실제 코드에 대해 기대되는 바를 명확하게 정의함으로써 불필요한 설계를 피하고 정확한 요구사항에 집중할 수 있다.

*JSP와 달리 코드를 수정한 후 계속 실행시킬 필요가 없다.

*when : 테스트를 진행하는 단계
*then : 테스트 결과를 검증하는 단계

 

📌스프링부트 스타터 테스트 목록

- JUnit : 자바 프로그래밍 언어용 단위 테스트 프레임워크
- Spring Test& Spring Boot Test : 스프링 부트 어플리케이션을 위한 통합테스트 지원
- AssertJ : 검증문인 어설션을 작성하는데 사용하는 라이브러리
- Hamcrest : 표현식을 이해하기 쉽게 만드는데 사용되는 Matcher 라이브러리
- Mockito : 테스트에 사용할 가짜 객체인 목 객체를 쉽게 만들고 관리하고 검증할 수 있게 지원하는 테스트 프레임워크
- JSONassert : JSON 용 어설션 라이브러리
- JasnPath : JSON 데이터에서 특정 데이터를 선택하고 검색하기 위한 라이브러리

 

📌단위 테스트(Unit Test)

- 작성한 코드가 의도대로 작동하는지 작은 단위를 검증하는 것을 의미한다.(단위는 보통 메소드 단위)
- 가장 이상적인 테스트 방법은 각 테스트 별로 서로 간섭해서는 안되며, 항상 같은 결과를 기대할 수 있어야한다.

 

1) JUnit
- 자바 언어를 위한 단위 테스트 프레임워크
- 테스트 방식을 구분할 수 있는 어노테이션을 제공한다.
- @Test 어노테이션으로 메소드를 호출할 때마다 새 인스턴스를 생성하여 독립적인 테스트가 가능하다.
- 예상 결과를 검증하는 어설션 메소드를 제공한다.
- 사용방법이 단순하고 테스트 코드 작성시간이 적다.
- 자동실행, 자체 결과를 확인하고 즉각적인 피드백을 제공한다.

 

2) 테스트 어노테이션
- @BeforeAll 전체 테스트를 시작하기 전에 처음으로 한 번만 실행한다. 전체 테스트 실행 주기에서 한 번만 호출되어야되기 때문에 메소드를 static으로 선언한다.
- @BeforeEach 테스트 케이스를 시작하기 전 매번 실행한다. 각 인스턴스에 대해 메소드를 호출해야하므로 메소드는 static을 사용해선 안된다.
- @AfterAll 전체 테스트를 마치고 종료하기 전에 한 번만 실행한다. 전체 테스트 실행 주기에서 한 번만 호출되어야되기 때문에 메소드를 static으로 선언한다. 
- @AfterEach 각 테스트 케이스를 종료하기 전에 매번 실행한다. 각 인스턴스에 대해 메소드를 호출해야하므로 메소드는 static을 사용해선 안된다.

 

3) AssertJ
- JUnit과 함께 사용해 검증문의 가독성을 높여주는 라이브러리이다.
- Asesertions.assertEquals(sum, num1 + num2);
- 테스트 코드를 위처럼 사용할 수 있지만 기대값과 비교값이 잘 구분되지 않는다.
- 가독성을 위해 AssertJ에서 사용하면된다.

'개발 > Spring Boot' 카테고리의 다른 글

Spring Boot [5]  (1) 2024.10.22
Spring Boot [4]  (0) 2024.10.21
Spring Boot [2]  (1) 2024.10.16
Spring Boot [1]  (0) 2024.10.15