본문 바로가기

테스트7

[서평 23년-20] 자바와 JUnit을 활용한 실용주의 단위 테스트 독서기간_2023년 2월 중순? 저자_제프 랭어, 엔디 헌트, 데이브 토마스 출간일_2019년 7월 3일 Java, JUnit만으로 테스팅을 공부할 수 있는 아주 좋은 책이다. 작년 10월쯤 우아한테크코스를 준비하면서 단위 테스트에 제대로 입문했었다. 우테코 이전에는 Spring Boot 공부하면서 테스트 코드를 작성하는데, Mock과 Inject의 개념이 잡혀있지 않은 채로 작성하려니 머리가 깨질 것 같았었다. (그때 Mock이란 개념을 처음 알긴 했지만...) 구글링해가면서 이렇게 로직을 테스트하는구나... 어림짐작하면서 코딩했었다. 남들이 when, then, mock 쓰니까 이렇게 하나보다...하고 이 책은 공채도 끝나고, 할 일도 없어서 읽기 시작했다. 그런데 굉장히 양질의 정보를 얻을 수 있었.. 2023. 5. 6.
프론트엔드는 TDD가 필수인 것 같다 백엔드 준비하는 사람이 프론트엔드 종아리까지 담가본 후 느끼는 바이다. 프론트엔드야 말로 테스트 없이는 효율적인 코딩이 불가능한 것 같다. 프론트 개발하면서 고민이 컴포넌트 밑 컴포넌트 밑 컴포넌트의 state 변경 이벤트가 잘 작동되는지 확인하는 것이다. API로 데이터 호출해서 컴포넌트에 잘 띄워지는지 등등... 비즈니스 로직이 막 대단한 것도 아닌데 결합도가 높다고 해야 하나? 백엔드는 실행 비용이 그렇게 크지 않아서 테스트의 중요성을 못느꼈는데, 프론트엔드는 실행이 좀 많이 무겁다... 그리고 API 호출 할 수가 없잖아... 인가 기능도 해놔서 쿠키 설정도 해야 되는데... 맞아요... 지금 Mockito 이용해서 Mock API 호출 후 위젯에 잘 보여지는지 테스트 하고 있는데 계속 오류가 나.. 2023. 4. 11.
[Spring Reactive] 리액티브 테스트 작성하기 스프링부트와 리액터에서는 비동기, 논블로킹 코드도 JUnit을 이용해 테스트할 수 있다. 리액티브 단위 테스트 리액티브 코드를 테스트할 때 핵심은 기능만을 검사하는 게 아니라 리액티브 스트림 시그널도 함께 검사해야 한다는 점이다. 리액티브 스트림은 onSubscribe, onNext, onError, onComplete를 말한다. @ExtendWith(SpringExtension.class) class InventoryServiceTest { InventoryService inventoryService; @MockBean private ItemRepository itemRepository; @MockBean private CartRepository cartRepository; @BeforeEach voi.. 2023. 3. 13.
TDD 테스트 주도 개발 Test Driven Development 1. TDD의 주된 이익 코드를 깨끗하게 유지하도록 치열하게 싸우지 않으면 시스템은 점점 퇴화한다. 코드를 재빠르게 추가할 수는 있지만 처음에는 good code 라기보다는 not so great code 일 가능성이 높다. TDD를 잘 따른다면 구현하는 실질적인 모든 사례에 대해 단위테스트를 작성하게 된다. 단위 테스트는 코드를 지속적으로 발전시킬 수 있는 자유를 준다. 작성하려는 코드가 있다면 항상 먼저 어떻게 그 코드를 테스트할지 고민해야 한다. 작성할 코드를 묘사하는 테스트를 설계해야 한다. 이러한 역 방향 접근법은 단위 테스트 전략의 핵심이다. 2. 단순하게 시작 TDD는 세 부분의 사이클로 구성된다. - 실패하는 테스트 코드 작성하기 - 테스트 통과시.. 2023. 2. 19.
코드 테스트에 관한 약어(FIRST, Right-BICEP, CORRECT) FIRST : 좋은 테스트 조건이란? [F]ast 테스트는 빠르게 동작해야 한다. 느린 것에 의존하는 코드를 최소화하자. [I]solated 직접적 혹은 간접적으로 테스트 코드와 상호 작용하는 코드가 많을수록 문제가 발생할 소지가 늘어난다. 다른 단위 테스트에 의존하지 않는 결합도를 낮은 테스트 코드를 작성하자. 각 테스트가 작은 양의 동작에만 집중하면 독립적인 테스트 코드로 유지하기 쉽다. 테스트 코드에도 단일 책임 원칙을 적용하자. 테스트 메서드가 하나 이상의 이유로 깨진다면 테스트를 분할하는 것을 고려하자. [R]epeatable 테스트는 실행할 때마다 결과가 같아야 한다. 반복 가능한 테스트를 만들려면 직접 통제할 수 없는 외부 환경에 있는 항목들과 최대한 격리시켜야 한다. [S]elf-valid.. 2023. 2. 16.
[Spring Boot] 스프링 부트 테스트하기 다루는 내용 - 통합 테스트 - 서버에서 애플리케이션을 테스트하는 방법 - 스프링 부트 테스트 유틸리티 ★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆ 6년 전 기술이므로 현재 용어가 많이 바뀌었다. 흐름만 파악하고 공식문서를 참고하여 개발하도록하자. https://spring.io/guides/gs/testing-web/ ★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆ 통합 테스트를 위한 자동 구성 스프링 애플리케이션 컨텍스트를 로드하고 테스트 클래스에 자동으로 주입하는 기능을 확성화하는 JUnit 클래스 러너인 SpringJUnit4ClassRunner를 제공하는 형태로 통합 테스트를 지원한다. @RunWith(SpringJUnit4ClassRunner.class) @SpringApplicationC.. 2023. 2. 5.
221105 오늘의 삽질 여러 테스트 실행 시 첫 테스트의 실행시간은 테스트의 준비 시간까지 포함된다. 테스트 준비 시간이 100ms 정도 추가되니 괜히 로직을 수정하지 말자. 삽질++; 2022. 11. 5.