SqueakByExample:7.1
개요
SUnit은 테스트의 생성과 배치를 지원하는 최소규모의 강력한 프레임 워크입니다. 그 이름에서 추측할 수 있듯이 Sunit의 디자인은 단위 테스트에 집중되어 있지만, 사실상 통합 테스트와 기능 테스트를 위해 사용될 수 있습니다. Sunit은 본래 Kent Beck이 개발하였으며, Joseph Pelrine이 확장하였고 또 다른 사람들이 섹션 7.6에 우리가 설명드릴 내용인 자원의 개념을 통합하였습니다.
테스트 실행과 테스트 주도 개발에 대한 관심은 스퀵 또는 스몰토크에 제한된 것은 아닙니다. 자동화 테스트 실행은 애자일 소프트웨어 개발 운동의 전형적인 특징을 이루었으며, 모든 소프트웨어 개발자들의 소프트웨어의 질 향상에 대한 관심은 그것을 채택하도록 만들 것입니다. 실제로 많은 언어를 사용하는 개발자들은 Uniet 테스트 능력의 진가를 알아보기 시작하였으며, xUnit의 버전은 Java, Python, Perl, .NET과 오라클을 포함한 많은 다른 언어들로 존재합니다. 이번 장은 SUnit 3.3(이 글을 쓸 당시 최신버전)에 대해 기술하였으며, 업데이트를 발견할 수 있는 SUnit의 공식 웹은 sunit.sourceforge.net입니다.
테스트 또는 테스트 수트의 구축 모두 새로운 것은 아니며, 모든 사람들은 테스트가 에러를 잡아내는 좋은 방법임을 알고 있습니다. 테스트를 핵심 실행법으로 만들고 자동화된 테스트를 강조한 eXtream 프로그래밍은, 테스트 실행을 프로그래머들이 싫어하는 정기적인 업무가 아닌, 생산적이고 재미있게 만드는 작업이 되도록 도움을 주어 왔습니다. 스몰토크 커뮤니티는 오랜 테스트 실행의 전통을 갖고 있으며, 그 이유는 개발의 증강 형식은 그 프로그래밍 환경에 의해 지원되기 때문입니다. 전통적인 스몰토크 개발환경에 있는 프로그래머들은 테스트들을 메서드가 마무리 된 후 곧바로 워크스페이스에서 작성할 것입니다. 때때로 시험상으로 실행해 볼 메서드의 머리 부분에서 주석으로 통합할 수 테스트들과 또는 약간의 설정이 필요한 테스트들은 클래스에서 예제 메서드로 포함될 수도 있습니다. 이 실행방식의 문제점들은 워크스페이스에서의 테스트들은 코드를 수정하는 다른 프로그래머들이 사용할 수 없다는 것이며, 주석들과 견본 메서드들은 이러한 점에서 더 낫지만, 그것들을 추적하고, 자동으로 시작하는 것은 여전히 쉽지 않습니다. 실행하지 않은 테스트는 버그를 찾는 작업에 있어 사용자를 도울 수 없습니다. 더욱이, 예제 메서드는 기대한 결과의 리더(reader)를 알려주지 않으므로, 예제를 실행할 수 있으며 아마도 놀랄만한 결과를 보실 수 있을 것이지만, 관찰된 동작이 정확한지에 관하여서는 알 수 없을 것입니다.
SUnit 은 유용한데, 자체 점검에 대한 테스트 작성을 우리에게 허용해주기 때문입니다: 테스트는 스스로 올바른 결과로 무엇이 되어야 하는지를 정의합니다. 또한 SUnit은 테스트들을 그룹들로 조직하고, 테스트들이 반드시 실행햐야할 컨텍스트를 기술하며, 테스트들의 그룹을 자동으로 실행하는 작업을 도와줍니다. 2분 남짓한 시간이면, SUnit을 사용하여 테스트들을 작성할 수 있기때문에, 워크스페이스에서 테스트를 위한 작은 코드 조각을 작성하는 대신에, SUnit을 사용하여 모든 저장된 내용들과 자동으로 실행 가능한 테스트들을 만들어 활용하실 것을 권장합니다.
이번 장에서 우리는, 왜 우리가 테스트를 시행하고 무엇이 좋은 테스트를 만드는지에 대해 토론부터 시작하겠습니다. 그 다음 SUnit을 사용하는 방법을 알려주는 작은 예시들을 시리즈로 제공할 것입니다. 마지막으로, 같이 SUnit의 실행을 살펴보다보면, 스몰토크에서 도구가 스스로를 지원하는 힘을 어떻게 사용하는 지를 이해할 수 있을겁니다.