xUnit은 객체 지향 프로그래밍 언어를 대상으로 하는 단위 테스트 프레임워크 계열을 일컫는 용어이다. 이 용어는 JUnit이라는 초기 Java 전용 테스트 프레임워크에서 비롯되었으며, 이후 다양한 언어와 플랫폼에 맞추어 변형된 프레임워크들을 포괄한다. 대표적인 예로는 다음과 같은 프레임워크가 있다.
- JUnit – Java 환경용
- NUnit – .NET 환경용
- xUnit.net – .NET 환경용, NUnit과 구별되는 설계 철학을 가짐
- PHPUnit – PHP 환경용
- CppUnit – C++ 환경용
- RSpec – Ruby 환경용 (행위 기반 테스트 프레임워크이지만 xUnit 계열에 포함되는 경우가 있음)
공통적인 특징은 다음과 같다.
-
테스트 케이스 정의
테스트 메서드(또는 함수)를 정의하고, 테스트하고자 하는 코드 조각을 호출한다. 테스트 메서드는 일반적으로assert계열의 검증 메서드를 사용해 기대 결과와 실제 결과를 비교한다. -
테스트 실행기
프레임워크는 테스트 클래스를 자동으로 탐색하고, 메서드 별로 독립적인 실행 환경을 제공한다. 테스트 실행 결과는 성공, 실패, 오류 등으로 집계된다. -
라이프사이클 훅
setup(또는setUp) 및teardown(또는tearDown) 메서드를 통해 각 테스트 전후에 필요한 초기화 및 정리 작업을 수행한다. -
어노테이션/속성 기반 메타데이터
많은 xUnit 프레임워크는 어노테이션(예:@Test,@Before,@After)이나 속성(예:[Test],[SetUp])을 사용해 테스트 메서드와 라이프사이클 훅을 선언한다. -
테스트 어셈블리/스위트
여러 테스트 클래스를 하나의 테스트 스위트로 묶어 실행하거나, 특정 테스트만 선택적으로 실행할 수 있는 기능을 제공한다.
xUnit 프레임워크는 지속적 통합(CI) 시스템과 연동되어 자동화된 테스트 파이프라인을 구성하는 데 널리 활용된다. 또한 테스트 주도 개발(TDD) 및 행동 주도 개발(BDD)과 같은 개발 방법론에서도 핵심 도구로 자리 잡고 있다.