단위 테스트를 작성하는 방법
소프트웨어 개발의 방향을 잡고 코드 기능에서 회귀 요소를 모니터링하기 위해 프로그램에 대해 단위 테스트를 작성할 수 있습니다. MATLAB® 단위 테스트 프레임워크는 다음 세 가지 테스트 작성 방법을 지원합니다.
스크립트 기반 단위 테스트: 각 단위 테스트를 테스트 스크립트 파일의 별도 섹션으로 작성합니다. 기본 가설 검정을 수행하고, 프레임워크가 테스트 결과를 기록하는 진단에 액세스하고, 실행하려는 테스트를 선택하여 테스트 스위트를 미세 조정하고,
TestRunner
객체를 만들고 구성하여 테스트 실행을 사용자 지정할 수 있습니다.함수 기반 단위 테스트: 각 단위 테스트를 테스트 함수 파일 내 로컬 함수로 작성합니다. 함수 기반 테스트는 xUnit 테스트 철학을 바탕으로 합니다. 함수 기반 테스트는 스크립트 기반 테스트에서 제공하는 기능을 지원하는 것 외에도 다양한 테스트 작성 기능에 액세스하도록 해 줍니다. 예를 들어, 제약 조건, 허용오차 및 테스트 진단을 포함하여 고급 가설 검정 기능을 사용할 수 있습니다.
클래스 기반 단위 테스트: 각 단위 테스트를 클래스 정의 파일 내
Test
메서드로 작성합니다. 클래스 기반 테스트는 스크립트 기반 테스트와 함수 기반 테스트에서 제공되는 기능을 지원하는 것 외에도 다양한 고급 테스트 작성 기능을 제공하며 전체 프레임워크 기능에 액세스하도록 해 줍니다. 예를 들어, 공유된 테스트 픽스처를 사용하고, 테스트를 파라미터화하고, 테스트 콘텐츠를 재사용할 수 있습니다.
스크립트 기반 단위 테스트
스크립트 기반 테스트를 사용하여 다음을 수행할 수 있습니다.
테스트 간에 공유할 변수를 정의하거나 테스트에 필요한 사전 조건을 정의합니다.
assert
함수를 사용하여 기본 가설 검정을 수행합니다. 예를 들어,assert(isequal(actVal,expVal))
을 사용하여 실제 값과 예상 값이 같음을 어설션할 수 있습니다. (고급 가설 검정 기능은 함수 기반 테스트와 클래스 기반 테스트에만 지원됩니다.)프레임워크가 기록한 테스트 진단에 액세스합니다. 자세한 내용은 테스트 진단에 프로그래밍적으로 접근하기 항목을 참조하십시오. (고급 진단 동작은 함수 기반 테스트와 클래스 기반 테스트에만 지원됩니다.)
통상적으로 스크립트 기반 테스트에서는 Test
요소 모음을 명시적으로 생성하지 않고, 테스트 파일을 만들어 이 파일 이름을 runtests
함수로 전달합니다. 명시적인 테스트 스위트를 생성한 경우(testsuite
함수 또는 matlab.unittest.TestSuite
클래스의 메서드 사용) 스크립트 기반 테스트에서 추가 기능을 사용할 수 있습니다. 명시적인 테스트 스위트를 사용하여 다음을 수행할 수 있습니다.
테스트 스위트를 미세 조정합니다. 일례로
matlab.unittest.selectors
네임스페이스의 클래스를 사용할 수 있습니다. (몇 가지 선택기는 클래스 기반 테스트에만 적용할 수 있습니다.)TestRunner
객체를 만들고 이를 사용자 지정하여 원하는 테스트를 실행합니다.matlab.unittest.plugins
네임스페이스의 플러그인 클래스를 테스트 실행기에 추가할 수 있습니다.
스크립트 기반 테스트에 대한 자세한 내용은 스크립트 기반 단위 테스트 작성하기 및 스크립트 기반 테스트 확장하기 항목을 참조하십시오.
함수 기반 단위 테스트
함수 기반 테스트는 스크립트 기반 테스트에서 제공하는 기능을 지원합니다. 또한 함수 기반 테스트를 사용하여 다음을 수행할 수 있습니다.
시스템의 테스트 이전 상태를 설정하고 테스트 실행 후에는 상태를 원래 상태로 되돌립니다. 이러한 작업들은 테스트 파일당 한 번 또는 단위 테스트당 한 번 수행할 수 있습니다. 자세한 내용은 설정 함수와 해제 함수를 사용하여 테스트 작성하기 항목을 참조하십시오.
matlab.unittest.fixtures
네임스페이스의 픽스처 클래스를 사용하여(applyFixture
메서드와 함께) 자주 사용되는 테스트 동작을 설정하고 해제할 수 있습니다.log
메서드를 사용하여 특정한 세부 정보 표시 수준으로 진단 정보를 기록합니다.matlab.unittest.qualifications
네임스페이스에 있는 가설 검정 라이브러리 전체를 사용합니다. 어떤 가설 검정을 사용할지 결정하려면 검증(Verification), 어설션 및 기타 가설 검정(Qualification) 표 항목을 참조하십시오.제약 조건, 실제 값 프록시, 허용오차 및 테스트 진단 등의 고급 가설 검정 기능을 사용합니다. 가설 검정에서
matlab.unittest.constraints
네임스페이스의 클래스와matlab.automation.diagnostics.Diagnostic
인터페이스에서 파생된 클래스를 사용할 수 있습니다.
함수 기반 테스트에 대한 자세한 내용은 함수 기반 단위 테스트 작성하기 및 함수 기반 테스트 확장하기 항목을 참조하십시오.
클래스 기반 단위 테스트
클래스 기반 테스트는 스크립트 기반 테스트와 함수 기반 테스트에서 제공하는 기능을 지원합니다. 또한 클래스 기반 테스트를 사용하여 다음을 수행할 수 있습니다.
설정 메서드 블록과 해제 메서드 블록을 사용하여 묵시적으로 테스트 이전 환경 상태를 설정하고 테스트 실행 후에는 상태를 원래 상태로 되돌립니다. 자세한 내용은 클래스를 사용하여 설정(Setup) 코드와 해제(Teardown) 코드 작성하기 항목을 참조하십시오.
클래스 간에 픽스처를 공유합니다. 자세한 내용은 공유 픽스처(Fixture)를 사용하여 테스트 작성하기 항목을 참조하십시오.
테스트를 범주별로 그룹화한 다음 지정된 태그를 사용해 테스트를 실행합니다. 자세한 내용은 단위 테스트에 태그 지정하기 항목을 참조하십시오.
파라미터화된 테스트를 작성하여 지정된 파라미터 목록에 대한 테스트를 조합하고 실행합니다. 자세한 내용은 클래스 기반 테스트에서 파라미터 사용하기 항목을 참조하십시오.
서브클래스화 및 상속을 사용하여 테스트 콘텐츠를 공유하고 재사용합니다. 예를 들어, 서브클래스를 파생하여 테스트 클래스에 정의된 파라미터와 메서드를 재사용할 수 있습니다. 자세한 내용은 Hierarchies of Classes — Concepts 항목을 참조하십시오.
클래스 기반 테스트에 대한 자세한 내용은 MATLAB에서 클래스 기반 단위 테스트 작성하기 항목을 참조하십시오.
단위 테스트 프레임워크 확장하기
단위 테스트 프레임워크는 테스트 툴 작성자에게 사용자 지정 제약 조건, 진단, 픽스처 및 플러그인을 통해 테스트 작성을 확장할 수 있는 기능을 제공합니다. 예를 들어, 사용자 지정 플러그인을 만들고 이를 사용하여 스크립트 기반 단위 테스트, 함수 기반 단위 테스트 또는 클래스 기반 단위 테스트를 실행할 때 테스트 실행기를 확장할 수 있습니다. 자세한 내용은 테스트 프레임워크 확장하기 항목을 참조하십시오.