오늘 할 일
🖊 코드 스테이츠 54일차
[Spring MVC] 테스팅
- Daily Coding
- 단위 테스트 개요
- 비즈니스 로직에서의 단위 테스트
- Junit 실습
- 슬라이스 테스트
다른거
- 1일 1커밋
- 복습
- 운동
오늘 배운 것
🤦♂️ [Spring MVC] 테스팅
단위 테스트(Unit Test)
- 여러 과정을 거쳐서 테스트를 한다면 매번 불필요한 작업들을 수행해야 하기 때문에 번거롭고 비효율적이다.
- 그래서 메서드 단위의 기능들을 테스트할 수 있는 단위 테스트가 필요하다.
- 최대한 작고, 최대한 독립적인 것이 좋다. 작은 단위의 테스트로 미리 버그를 찾아낼 수 있어 빠른 시간 안에 문제를 찾아낼 가능성이 높다.
- 테스트 케이스가 잘 짜여져 있으면 버그가 발생하더라도 원인을 발견하기에 용이하다.
- 단위 테스트는 서비스 계층에서 이루어지는 테스트이고, 서비스 계층은 비즈니스 로직을 구현한다. 비즈니스 로직에서 사용하는 클래스들이 독립적으로 테스트하기 가장 좋은 대상이기 때문에 단위 테스트라고 부른다.
- FIRST 원칙(Fast, Independent, Repeatable, Self-validating, Timely): 작성한 테스트 케이스는 빠르고, 독립적이며, 어떤 환경에서도 반복적으로 실행이 가능해야 하고, 성공 또는 실패라는 결과를 보여주여야 하고, 테스트하려는 기능을 구현하기 직전에 작성해야 한다.
- Given - When - Then 표현 스타일: BDD 테스트 방식에서 사용하는 스타일로 단위 테스트에 익숙하지 않은 사람들이나 테스트 케이스의 가독성을 높이기 위해 사용한다.
- Assertion: 테스트 결과를 검증할 때 주로 사용하는 용어이다. 예상하는 결과 값이 참(true)이길 바라는 것이라고 생각하면 된다.
JUnit으로 비즈니스 로직에 단위 테스트 적용하기
Assertion 메서드 사용하기
- assertEquals(expected, actual): 기대 값(expected)과 실제 값(actual)이 같은지 검증하는 메서드이다. 같으면 true이다.
- assertNotNull(): 첫번째 파라미터에는 테스트 대상 객체가 들어가고, 두번째 파라미터에는 테스트에 실패했을 때, 표시할 메시지이다.
- assertThrows(): 호출한 메서드의 동작 과정 중 예외가 발생하는지 테스트하는 것이다. 만약 예외 타입이 다르다면 상속 여부에 따라 테스트 결과가 달라질 수 있다.
- assertTrue(): 파라미터로 boolean 값이 필요하기 때문에 참이나 거짓으로 나올 수 있는 조건을 작성한다.
테스트 케이스 실행 전, 전처리
- @BeforeEach: 각 테스트 케이스가 실행될 때마다 테스트케이스 실행 직전에 먼저 실행되어 초기화 작업 등을 진행할 수 있다.
- @BeforeAll: 클래스 레벨에서 테스트 케이스를 한꺼번에 실행시키면서 테스트 케이스가 실행되기 전에 딱 한 번만 초기화 작업을 할 수 있도록 해주는 애너테이션이다.
테스트 케이스 실행 후, 후처리
- @AfterEach: 각 테스트케이스가 끝날 때마다 실행된다.
- @AfterAll: 테스트 케이스를 모두 실행한 후에 실행된다.
Assumption을 이용한 조건부 테스트
- Assumption을 사용하면 특정 환경에만 테스트 케이스가 실행되도록 할 수 있다.
- assumTrue(): 파라미터로 입력된 값이 true이면 나머지 아래 로직들을 실행한다.
다른거
- 1일 1커밋
코플릿 문제 35번 quickSort를 풀었습니다. quickSort는 분할정복을 사용하여 풀어내는 문제입니다. 정석적인 코드가 있어서 조금 고쳐서 제출했습니다. pivot이라고 하는 값을 기준으로 좌, 우를 나눠서 오름차순으로 정렬될 때까지 반복합니다. 사실 봐도 코드로 짜라고 하면 다시 짤 자신은 없습니다… 유튜브로 학습하긴 했는데, 학습이 더 필요할 것 같네요ㅠㅠ
Coplit 35 quickSort - 코드는 비공개입니다❗️
- 복습
오늘은 복습할 시간이 없었습니다. ㅠㅠ 대신에 실습과제를 이 악물고 해서 제출했습니다. (봐죠라...)
- 운동
운동은 어제 못해서 꼭 해야했습니다! ^^...
느낀점
- 새벽까지 하면 안되지 하면서도 모자란 학습량을 따라가려고 욕심을 내다보니 새벽 2~3시에 잠드는 것은 일상이 됐다. 1시를 넘기지 않고 싶은데, 아직 복습도 못한 부분이 많아서 편히 잠들 수 없다. 조금만 고생하자!
- 코플릿 문제는 점점 더 헬이 되어간다... 물론 공부하면 큰 도움이 될만한 문제들이니까 포기하면 안된다! 알고리즘 한 문제 푸는 것도 버거워진 요즘이다... 그래도 해야지 별 수 없다!
- 하체운동만 하는데, 개털려서 마지막 세트때 무릎으로 무게를 받는 느낌이 들자마자 내려놓았다. 내일 무릎 아플까봐 걱정이 된다. 바벨 스쿼트를 대체할만한 운동을 찾고싶다.
- 아 그리고 오늘 예비군을 미루는 서류를 제출했다. 12월 8일로 지정받았는데, 코드스테이츠 같은 3개월 이상의 직업 훈련의 경우도 예비군 연기 사유에 해당하여 연기할 수 있다는 답변을 받았기 때문이다. 자세한 내용은 소속 동대와 통화하는 것이 좋다!
내일 할 일
🧪 코드 스테이츠 55일차
[Spring MVC] 테스팅
- Daily Coding
- Hamcrest
- 슬라이스 테스트 실습 및 페어
다른거
- 1일 1커밋
- 복습
'TIL' 카테고리의 다른 글
TIL_20221110 (0) | 2022.11.10 |
---|---|
TIL_20221109 (0) | 2022.11.09 |
TIL_20221107 (0) | 2022.11.07 |
TIL_20221106 (0) | 2022.11.06 |
TIL_20221105 (0) | 2022.11.05 |