내일배움캠프 2/9

PRESENT_22·2023년 2월 9일
0

내일배움캠프

목록 보기
56/56

💪오늘 배운 내용

TDD

코드 안전성

사이드 이펙트 줄임

코드 작성목적 명확

코드에 불필요한 내용 줄임

JUnit

Java 테스트 프레임워크
단위테스트 위한 도구 제공
-단위테스트 란?
코드의 특정 모듈이 의도된 동작을 하는지 테스트 하는 절차
모든 함수와 메소드에 대한 각각의 테스트 케이스를 작성하는것
단위 테스트 <-> 통합 테스트(비지니스 로직 자체를 테스트)

단정문 (Assert)로 테스트 케이스의 기댓값에 대해 수행결과 확인

JUnit Jupiter

TestEngine API 구현체로 JUnit 을 구현
테스트코드를 발견하고 실행하는 역할

JUnit Platform

Test를 실행하기 위한 뼈대
Test를 발견하고 테스트 계획을 생성하는 TestEngine 인터페이스를 가지고있음.
주피터가 구현(임플리먼트 느낌) TestEngine 을 통해 테스트를 발견하고, 수행및 결과를 보고함
각종 IDE (인텔리제이) 연동을 보조 (콘솔출력)
Platform = TestEngine API + Console Launcher + JUnit 4 Based Runner 등)

JUnit Vintage

제이유닛 이전버전에서 사용하고있는 제이유닛4를 5랑 호환을 위해 존재
TestEngine API 구현체로 JUnit 3,4 를 구현
기존에 3,4 버전으로 작성된 코드를 실행할 때 사용됨

JUnit Life Cycle Annotation


@Test 테스트용 메소드를 표시하는 어노테이션 단위테스트 마다 붙여줘야함

@Before Each
테스트 어노테이션이 붙어있는 메소드가 시작되기 전
실행되어야 하는 메소드 표현

@After Each 시작된 후 실행되어야 하는 메소드 표현
@Before All 테스트 시작 전 실행 되어야하는 메소드 표현 (스태틱 처리 필요)
@After All 테스트 종료 후 실행 되어야하는 메소드 표현 (스태틱 처리 필요)

Main Annotation

@SpringBootTest
-통합테스트 용도로 사용
-@SpringBootApplication을 찾아서 하위의 모든 Bean 을 스캔하여 로드함
-그 후 Test 용 application Context를 만들어 Bean을 추가하고 MockBean을 찾아 교체

@ExtendWith
-@RunWith이 변경됨
-메인으로 실행될 Class 를 지정
-SpringBootTest에 기본적으로 탑재

@WebMvcTest(class명 .class) 주로 컨트롤러 테스트에 사용
-()안에 작성된 클래스만 로드하여 테스트 진행
-매개변수를 지정해주지 않으면 컨트롤러와 연관된 Bean이 모두 로드됨
-스프링의 모든 Bean 을 로드하는 @Spring Boot Test 대신 컨트롤러 관련 코드만 테스트 할 경우 사용

@Autowired about Mockbean
-Controller의 API 를 테스트하는 용도인 MockMvc 객체를 주입받음
-perform() 메소드를 활용하여 컨트롤러의 동작을 확인할 수 있음
.andExpect() ,andDo() , andReturn() 등의 메소드 같이 활용

@MockBean
-테스트 할 클래스에 주입받고있는 객체에 대한 가짜 객체를 생성해줌
-해당객체는 실체 행위를 하지 않음
given() 메소드를 활용하여 가짜 객체의 동작에 대해 정의하여 사용할 수 있음
예를들어 컨트롤러를 테스트한다 -> 서비스 클래스를 가져다 씀
-> 의존성이 잡힘 -> 가짜 객체를 만들어줌

@AutoConfigureMockMvc
-spring.tset.mockmvc 의 설정을 로드 MocvMvc 의 의존성 자동으로 주입
유닛테스트 할때 MockMvc를 사용하면 이 어노테이션 붙여주는게 국룰
-MockMvc는 REST API 테스트하는 클래스

@Import
-필요한 Class들을 Configuration 으로 만들어 사용할수있음
-Configuration Component 클래스도 의존성 설정할 수 있음
-Import 된 클래스는 주입으로 사용 가능

통합테스트

-여러기능을 조합하여 전체 비즈니스 로직이 제대로 동작하는지 확인
@SpringBootTest 를 통해 진행하고 @SpringBootApplication을 찾아가 모든 Bean을
로드하기 때문에 테스트 실행 할 때 마다 모든빈 스캔,로드를 해야함
매번 무거운 작업 -> 프로젝트가 크면 단위테스트 쓰자

단위테스트

-프로젝트에 필요한 모든 기능에 대한 테스트를 각각 진행

F.I.R.S.T 원칙

Fast: 테스트 코드의 실행은 빨라야 한다.
Isolated: 독립적인 테스트가 가능해야 함
Repeatable: 테스트는 실행할 때마다 같은 결과를 만들어야 한다.
Self-validating: 테스트 그 자체로 실행하여 결과를 확인할 수 있어야 함 (다른 코드 개입 없이 내가 짠 테스트 코드로만 검증이 되어야한다.)

Timely: 비지니스 코드가 완성되기 전에 구성하고 테스트가 가능해야 함
(코드가 완성되기 전부터 테스트가 따라와야한다는 TDD원칙 담음)

https://fomaios.tistory.com/entry/CS-FIRST-%EC%9B%90%EC%B9%99%EC%9D%B4%EB%9E%80-featUnitTest


📝메모


😨오늘의 오류


✔️check list

0개의 댓글