이 Ruby 코드는 Test::Unit 모듈 내에 경량 유닛 테스트 프레임워크를 자체적으로 구축합니다.
1. 테스트 자동화 및 실행 메커니즘
- 자동 실행:
at_exit훅을 통해 프로그램 종료 시Test::Unit.autotest를 호출, 모든 테스트를 자동으로 탐지하고 실행합니다. - 테스트 탐지:
ObjectSpace를 활용하여Test::Unit::TestCase를 상속받은 클래스 내 “test”로 시작하는 공개 메서드를 식별하여 실행합니다. - 테스트 생명주기: 각 테스트 실행 전
setup, 실행 후teardown메서드를 호출하여 환경을 초기화하고 정리합니다. - 예외 처리:
Test::Assertion은 테스트 실패로, 그 외Exception은 오류로 분류하여 상세 정보를 제공합니다.
2. Test::Unit::TestCase 및 핵심 검증 기능
- 기반 클래스:
Test::Unit::TestCase는 테스트 케이스 정의를 위한 기본 클래스로,setup과teardown훅을 제공합니다. - 다양한
assert메서드:assert를 기본으로, 값 비교(assert_equal,assert_in_delta), 타입/상태 검증(assert_instance_of,assert_nil), 패턴/객체 동일성 검증(assert_match,assert_same), 예외 검증(assert_raises,assert_nothing_raised), 그리고 연산자 검증(assert_operator) 등 포괄적인 테스트 검증 기능을 지원합니다.