본문 바로가기

테스트/테스트코드9

JUnit5 관련 어노테이션이나 설정관련 설명 정리 Junit5 라이브러리 사용하기 위해선 아래 라이브러리 import 필요하다. import org.junit.jupiter.api.Test; 동등 비교하기 위해선 아래 junit5 메서드 사용해야 함 assertEquals(기대값, 실제값); Service나 controller를 테스트 할 때, 테스트 대상 Service나 controller 에서 composition으로 주입받아서(의존하는) 객체가 있으면 객체를 생성(new) 할 때 마다 의존 객체도 구현해서 주입해줘야하는 문제가 발생한다. 그런경우 @SpringBootTest 어노테이션을 붙이면, 스프링에서 어플리케이션을 직접 띄우는 것과 유사하게 테스트를 할때도 모든 스프링 빈을 다 만들어서 애플리케이션 실행하는 것과 같은 환경을 만들어서 테스트를.. 2023. 4. 19.
스프링부트 각 계층 테스트 하는 방법 Domain 계층 : 클래스를 테스트 하는 것과 동일하게 별도의 추가적인 설정 없이 별도의 클래스를 만들고, 안에 테스트할 메서드를 적으면 됨. ※ Service, Repository, Controller 계층은 빈은 스프링에서 관리하기 때문에, 테스트에 @SpringBootTest를 붙여야 함 Service, Repository 계층 : 스프링 빈을 사용하는 테스트 방법 사용 (@SpringBootTest) 데이터 위주의 검증이 주로 테스트 됨 Controller 계층 : 스프링 빈을 사용하는 테스트 방법 사용 (@SpringBootTest) 응답받은 JSON을 비롯한 HTTP 위주의 검증 2023. 1. 3.
Junit5에서 사용되는 주요 어노테이션 @Test : 테스트 메서드를 지정함. 테스트 메서드를 실행하는 과정에서 오류가 없으면 성공 @BeforeEach : 각 테스트 메서드가 수행되기 전에 실행되는 메서드를 지정 @AfterEach : 각 테스트가 수행된 후에 실행되는 메서드를 지정 @BeforeAll : 모든 테스트를 수행하기 전에 최초 1회 수행되는 메서드를 지정 @AfterAll : 모든 테스트를 수행한 후 최후 1회 수행되는 메서드 지정 package com.group.libraryapp import org.junit.jupiter.api.AfterAll import org.junit.jupiter.api.AfterEach import org.junit.jupiter.api.BeforeAll import org.junit.jupite.. 2023. 1. 3.
테스트코드 수동으로 직접 만들었을 때 단점 (테스트 프레임워크 안 쓸 때) 1. 테스트 클래스와 메서드가 생길 때 마다 메인 메서드에 직접 코드를 추가해야 하고, 그럴수록 메인 메서드가 계속 커진다. 테스트 메서드를 개별적으로 실행하기도 어렵다. 2. 테스트가 실패한 경우 어떤 값이 나오길 기대하였고, 어떤 잘못된 값이 들어와 실패했는지 알 수 없는 단점이 존재함. 그리고 예외를 던지거나, try catch를 사용해야 하는 등 직접 구현해야 할 부분이 많아 불편하다. 3. 테스트 메서드별로 공통적으로 실행되어야 하는 기능이 있다면, 프레임워크 없이 수동으로 작성하면 메서드마다 중복이 생김. (아래 예시 코드에서는 Calculator 생성하는 var calculator = Calculator(5) 부분 중복 발생) 아래는 코틀린으로 작성한 수동 예시 코드 ( 프레임워크 없이 메인.. 2023. 1. 3.