test
-
유닛 테스트는 정확히 무엇을 가리키는가test 2021. 11. 28. 23:57
저번 포스팅에 이어서 Unit Testing Principles, Practices, and Patterns의 Chapter 2를 요약하려고 한다. 이번 챕터를 통해 '유닛 테스트란 무엇인가'에 대한 저자의 생각과, 앞으로 책에서 다룰 내용들에 앞서 필요한 배경 지식을 배울 수 있다. 유닛 테스트의 정의와 두 학파 유닛 테스트는 다음을 모두 만족하는 자동화한 테스트이다. 1. 작은 코드(unit)를 검증한다. 2. 빠르게 실행된다. 3. 격리되어(isolated) 실행된다. 이 중 3번에 대해서 학파별로 의견이 극명하게 나뉜다. "유닛 테스트의 정의에서 말하는 isolation의 의미는 무엇인가"에 대한 의견이 핵심이 되어, 유닛 테스트에 대한 철학과 방법이 갈리게 된다. Classical school이..
-
좋은 유닛 테스트를 찾아서test 2021. 11. 13. 20:06
좋은 유닛 테스트를 짜고 싶어! 나는 테스트 작성하는 것을 은근히 즐긴다. 파란불이 하나씩 들어오는 쾌감이 좋다. 게다가 좋은 테스트를 작성한 것 같은 착각(?)을 느낄 때는 뿌듯함이 몇 배로 느껴진다. 내가 의미있다고 생각하는 테스트는 비즈니스 로직을 잘 검사하고, 테스트를 읽는 이로 하여금 프로덕션 코드를 잘 설명해주는 테스트이다. 버그 이슈를 처리하면서 해당 버그를 만들어낸 조건을 테스트에 추가할 때도 묘한 희열을 느낀다. 안타깝게도 나는 버그를 만들었지만, 이 테스트가 존재하는 한 똑같은 버그가 생길 일은 없을테니까! 하지만 자괴감이 드는 테스트를 만드는 날도 자주 있다. 이런 테스트는 바로 테스트를 위한 테스트이다. 테스트를 안 만들면 안 될 것 같아서 억지로 만든 거다. 수많은 클래스들을 종합..
-
Spock 체험기test 2021. 10. 31. 20:00
이번 글에서는 내가 애용하는 테스트 프레임워크 Spock에 대한 간단한 소개와 함께, 최근에 겪었던(그리고 아직까지도 이해하지 못한) 문제를 소개하고자 한다. 테스트를 편리하게 해주는 Spock 난 평소에 테스트 코드를 짤 때 Spock framework를 즐겨서 사용하는 편이다. 테스트를 작성할 때 보다 보편적인 선택은 JUnit + Mockito인데, 틈틈이 Spock을 사용해본 결과 내가 생각하는 Spock의 상대적인 장점은 다음과 같다. 코드가 간결하고 직관적이다. 메소드 이름에 문자열을 사용할 수 있어서, 테스트 케이스의 내용이 이해가 잘 된다. JUnit에서는 메소드명을 최대한 구체적으로 적어서 테스트 내용을 설명하지만 공백을 사용할 수 없다 보니 아무래도 가독성이 떨어진다. 그런데 Spock..