해결된 질문
작성
·
536
1
스프링 부트 공부하다가 왜 이렇게 되는지 찾아봐도
제대로 설명해주는 곳이 없어서 아쉬웟는데
강의를 들으면서 정말 만족하면서 듣고 있습니다.
테스트 코드에 사용하는 클래스나, 매서드들은 배우는 입장에서는 강사님께서 알고계신 정보를 주입해주는 방법말고는 스프링 지식이 부족해서 알기가 어렵더라구요
강사님이 강의 진행을 하시면서 사용하시는
테스트 코드나 매서드들의 정보는 스프링 doc나 어디를 가야 공식문서처럼 볼수있는 곳이 있을까요?
스스로 필요한 테스트 클래스나 매서드들 찾아서 공부해보고 싶어서 문의를 남겨봅니다,
답변 1
2
"테스트 코드에 사용하는 클래스나 메서드"라는 게 정확히 뭘 말씀하시는 것인지 잘 모르겠습니다.
아마도 테스트 코드에만 등장하는 테스트용 라이브러리나, 프레임워크 등의 코드를 말씀하시는 것 같네요.
이번 강의는 스프링 부트의 테스트를 자세히 다루지 않았습니다. 테스트 주제만 살펴보려고 해도 꽤나 방대한 주제이거든요.
아무튼 스프링부트를 사용하면서 테스트를 작성하시려면 다음 기술을 익히고 잘 아셔야 합니다.
JUnit 5 - JUnit을 이용해서 테스트 코드 작성하는 방법을 JUnit User Guide와 같은 문서를 통해서 학습하셔야 합니다. 아니면 JUnit 테스트 코드 작성 방법을 다루는 책이나 강의를 보셔도 괜찮습니다. 어쨌든 공식 문서는 꼭 보세요. 제가 만든 모든 테스트는 이걸 사용합니다.
AssertJ - 이건 테스트에서 사용하는 assert 관련 코드를 손쉽게 만들게 도와주는 라이브러리입니다. JUnit 5와 함께 쓰시면 됩니다. 이것도 기본적으로 사용되는 라이브러리라 공식 문서의 가이드와 튜토리얼을 보면서 익혀두세요.
Mockito 이건 stub/mock을 이용한 테스트를 만들 때 사용되는 것입니다. 거의 필수적으로 사용되는 도구이므로 이것도 잘 익히셔야 합니다. 공식 문서를 보시는게 가장 좋습니다.
위 세가지는 자바에서 테스트를 작성할 때 쓰는 범용적인 도구이고요. 이제 스프링의 테스팅 프레임워크를 공부하셔야 합니다.
먼저 스프링의 테스트 기술을 학습하셔야 하는데 공식 문서를 보면 됩니다.
https://docs.spring.io/spring-framework/docs/current/reference/html/testing.html#testing
이건 최신 버전(6.0) 문서이고 스프링 이전 버전(5.x) 문서를 보려면 검색을 해보세요.
스프링 테스트와 더불어 스프링 부트의 테스트 기술도 학습해야 합니다.
https://docs.spring.io/spring-boot/docs/current/reference/htmlsingle/#features.testing
일단 이 정도를 학습하시면 웬만한 테스트를 작성할 때 필요한 클래스와 메소드 등을 다 파악하실 수 있습니다. 한번 학습한다고 다 완벽하게 잘 활용하기 힘들겠죠. 그래서 테스트를 꾸준히 만들면서 좋은 테스트 코드를 어떻게 만드는지 계속 고민하고 연구하셔야 합니다.
스프링 부트에서 쓰는 테스트 하나만 다루려고 해도 이번 강의 분량의 강의 하나가 필요합니다. 그만큼 도구가 많고 이를 잘 활용하는게 중요합니다. 테스트를 진지하게 작성하려고 하신다면 시간을 충분히 잡고 이런 기술을 차근차근 익혀보세요.
시중에 나온 좋은 JUnit 또는 자바 관련 테스트 서적이 있으면 그것도 읽어보시면 좋겠습니다. 좀 더 나가서 TDD까지 하신다면 더 좋겠습니다.
테스트 기술이 이렇게 많은 이유가 뭘까 궁금하실 수 있는데요. 제가 생각하는 이유는, 테스트 코드는 항상 뒷전이고, 시간을 많이 잡아먹는다고 작성하지 않으려는 경향이 있기 때문입니다. 이걸 극복하고 좋은 테스트를 만들면서 장기간 프로젝트를 안정적으로 이끌어가려면, 테스트를 빠르고 효과적으로 작성하는 실력이 필요합니다. 동시에 좋은 도구들도 있어야 하고요. 그래서 이런 테스트 작성 기법을 배우고 연습하고 꾸준히 작성해보는게 필요합니다.
감사합니다.
테스트 코드의 종류와 공부하는 범위,그리고 공부 방법까지 세세하게 알려주셔서 감사합니다!
강사님 항상 감사하며 열심히 공부하겠습니다.