MATLAB에서 클래스 기반 단위 테스트 작성하기
MATLAB® 프로그램을 테스트하려면, 값을 테스트하고 실패에 대해 처리하는 메서드인 가설 검정(Qualification)을 사용하여 단위 테스트를 작성하십시오.
테스트 클래스 정의
테스트 클래스는 matlab.unittest.TestCase
에서 상속되고 Test
특성(Attribute)을 가진 methods
블록을 가져야 합니다. methods
블록에는 각각이 단위 테스트인 함수가 있습니다. 그 뒤에 일반적이고 기본적인 클래스 정의가 나옵니다.
%% Test Class Definition classdef MyComponentTest < matlab.unittest.TestCase %% Test Method Block methods (Test) % includes unit test functions end end
단위 테스트(Unit Test)
단위 테스트는 소프트웨어 내의 단위의 정확성을 확인하는 방법입니다. 각각의 단위 테스트는 methods 블록 내에 들어 있습니다. 함수는 입력값으로 TestCase
인스턴스를 받아야 합니다.
%% Test Class Definition classdef MyComponentTest < matlab.unittest.TestCase %% Test Method Block methods (Test) %% Test Function function testASolution(testCase) %% Exercise function under test % act = the value from the function under test %% Verify using test qualification % exp = your expected value % testCase.<qualification method>(act,exp); end end end
가설 검정(Qualification)은 값을 테스트하고 실패에 대해 처리하는 메서드입니다. 다음 표에는 가설 검정 유형이 나열되어 있습니다.
검증(Verification) | 예외를 발생시키지 않으면서 실패를 생성하고 기록하려면 이 가설 검정(Qualification)을 사용하십시오. 남아 있는 테스트가 완료될 때까지 실행됩니다. | matlab.unittest.qualifications.Verifiable |
가정(Assumption) | 특정 사전 조건이 충족될 때만 테스트가 실행되도록 하려면 이 가설 검정을 사용합니다. 그러나, 사전 조건을 충족시키지 않고 테스트를 실행해도 테스트 실패가 생성되지는 않습니다. 가정 실패가 발생하면 테스트 프레임워크는 테스트에 필터링 표시를 합니다. | matlab.unittest.qualifications.Assumable |
어설션 | 현재 테스트의 사전 조건이 충족되는지 확인하려면 이 가설 검정을 사용합니다. | matlab.unittest.qualifications.Assertable |
치명적 어설션(Fatal Assertion) | 어설션 지점의 실패로 인해 현재 테스트 메서드의 나머지 부분의 유효성이 없어지거나 상태가 복구 불가능하면 이 가설 검정을 사용합니다. | matlab.unittest.qualifications.FatalAssertable |
MATLAB 단위 테스트 프레임워크(Unit Testing Framework)는 각각의 가설 검정(Qualification) 유형에 대해 약 25개의 가설 검정 메서드를 제공합니다. 예를 들어, verifyClass
나 assertClass
를 사용하여 값이 예상 클래스인지 테스트하고 assumeTrue
나 fatalAssertTrue
를 사용하여 실제 값이 참인지 여부를 테스트합니다. 가설 검정 메서드에 대한 요약을 보려면 검증(Verification), 어설션 및 기타 가설 검정(Qualification) 표 항목을 참조하십시오.
각각의 단위 테스트 함수는 테스트 중인 코드를 실행하여 실제 값을 가져오고 이와 관련된 예상 값을 정의하는 경우가 많습니다. 예를 들어, plus
함수를 테스트하는 경우 실제 값이 plus(2,3)
이고 예상 값이 5
일 수 있습니다. 이 테스트 함수 내에서 실제 값과 예상 값을 가설 검정 메서드에 전달하는 것입니다. 예를 들면 다음과 같습니다.
testCase.verifyEqual(plus(2,3),5)
기본 단위 테스트의 예제를 보려면 클래스를 사용하여 간단한 테스트 케이스 작성하기 항목을 참조하십시오.
고급 테스트 클래스에 대한 추가 기능
MATLAB 단위 테스트 프레임워크에는 다음과 같이 고급 테스트 클래스를 작성하는 몇 가지 기능이 있습니다.
묵시적으로 시스템의 테스트 이전 상태를 설정하고 테스트 실행 후에는 상태를 원래 상태로 되돌리는 설정 methods 블록과 해제 methods 블록. 설정 코드와 해제 코드가 사용된 테스트 클래스의 예제를 보려면 클래스를 사용하여 설정(Setup) 코드와 해제(Teardown) 코드 작성하기 항목을 참조하십시오.
실제 값 프록시, 테스트 진단, 제약 조건 인터페이스 등의 고급 가설 검정(Qualification) 기능. 자세한 내용은
matlab.unittest.constraints
항목과matlab.automation.diagnostics.Diagnostic
항목을 참조하십시오.지정된 파라미터 목록에 대한 테스트를 결합하고 실행하는, 파라미터화된 테스트. 자세한 내용은 파라미터화된 기본 테스트 생성하기 항목과 파라미터화된 고급 테스트 생성하기 항목을 참조하십시오.
자주 사용하는 테스트 동작의 설정과 해제를 처리하며, 클래스 간 픽스처(Fixture)를 공유하는, 곧바로 사용할 수 있는 픽스처. 자세한 내용은
matlab.unittest.fixtures
항목과 공유 픽스처(Fixture)를 사용하여 테스트 작성하기 항목을 참조하십시오.사용자 지정 테스트 픽스처를 생성하는 기능. 자세한 내용은 기본 사용자 지정 픽스처(Fixture) 생성하기 항목과 고급 사용자 지정 픽스처(Fixture) 생성하기 항목을 참조하십시오.