함수 기반 단위 테스트
테스트 함수 생성하기
테스트 함수는 메인 함수와 개별 로컬 테스트 함수가 들어 있는 단일 MATLAB® 파일입니다. 선택적으로, 파일 픽스처(Fixture)와 새로운 픽스처 함수를 포함할 수 있습니다. 파일 픽스처는 파일에 있는 모든 테스트에서 공유되는 설정 함수와 해제 함수로 구성됩니다. 이 함수는 테스트 파일당 한 번 실행됩니다. 새로운 픽스처는 각 로컬 테스트 함수의 이전과 이후에 실행되는 설정 함수와 해제 함수로 구성됩니다.
메인 함수 생성하기
메인 함수는 모든 로컬 테스트 함수를 하나의 테스트 배열로 모읍니다. 메인 함수의 이름은 테스트 파일의 이름에 해당하며 'test'(대/소문자 구분 안 함)라는 단어로 시작하거나 끝나야 합니다. 파일 이름이 'test'라는 단어로 시작하거나 끝나지 않으면 파일에 포함된 테스트가 어떤 경우에는 무시될 수 있습니다. 이 예제에서 MATLAB 파일은 exampleTest.m
입니다. 테스트 배열 tests
를 생성하려면 메인 함수가 functiontests
를 호출해야 합니다. localfunctions
를 functiontests
에 대한 입력값으로 사용하여 파일 내의 모든 로컬 함수에 대한 함수 핸들의 셀형 배열을 자동으로 생성하십시오. 다음은 일반적인 메인 함수입니다.
function tests = exampleTest tests = functiontests(localfunctions); end
로컬 테스트 함수 생성하기
개개의 테스트 함수는 (테스트를 생성하는) 메인 함수가 포함된 동일한 MATLAB 파일에 로컬 함수로 포함됩니다. 이러한 테스트 함수의 이름은 ‘test’라는 단어(대/소문자 구분 안 함)로 시작하거나 끝나야 합니다. 각 로컬 테스트 함수는 하나의 입력값, 즉 함수 테스트 케이스 객체 testCase
를 받아야 합니다. 테스트 프레임워크가 자동으로 이 객체를 생성합니다. 테스트 함수 생성에 대한 자세한 내용은 함수를 사용하여 간단한 테스트 케이스 작성하기 항목과 검증(Verification), 어설션 및 기타 가설 검정(Qualification) 표 항목을 참조하십시오. 다음은 통상적인 로컬 테스트 함수 골격의 한 예입니다.
function testFunctionOne(testCase) % Test specific code end function testFunctionTwo(testCase) % Test specific code end
선택적 픽스처(Fixture) 함수 생성하기
설정(Setup) 코드와 해제(Teardown) 코드는 테스트 픽스처 함수라고도 하며, 시스템의 테스트 이전 상태를 설정하고 테스트 실행 후 상태를 원래 상태로 되돌립니다. 이러한 함수에는 두 가지 유형이 있습니다. 하나는 테스트 파일별로 한 번 실행되는 파일 픽스처 함수이고, 다른 하나는 각 로컬 테스트 함수 이전과 이후에 실행되는 새로운 픽스처 함수입니다. 이들 함수는 테스트 생성에 필수적이지 않습니다. 일반적으로, 단위 테스트 캡슐화를 높이기 위해 파일 픽스처보다는 새로운 픽스처를 사용하는 것이 바람직합니다.
함수 테스트 케이스 객체 testCase
는 파일 픽스처 함수와 새로운 픽스처 함수에 대한 유일한 입력값이어야 합니다. 테스트 프레임워크가 자동으로 이 객체를 생성합니다. TestCase
객체는 설정 함수, 테스트 함수, 해제 함수 간 정보를 전달하는 수단입니다. TestData
속성은 기본적으로 struct
로서, 필드와 데이터를 쉽게 추가할 수 있게 해 주는 속성입니다. 이 테스트 데이터의 일반적인 사용 용도에는 경로와 그래픽스 핸들이 있습니다. TestData
속성 사용의 예제는 설정 함수와 해제 함수를 사용하여 테스트 작성하기 항목을 참조하십시오.
파일 픽스처(Fixture) 함수. 파일 내 모든 테스트에서 설정 함수와 해제 함수를 공유하려면 파일 픽스처 함수를 사용하십시오. 파일 픽스처 함수의 이름은 각각 setupOnce
와 teardownOnce
여야 합니다. 이 함수는 각 파일에 대해 한 번 실행됩니다. 테스트하기 전에 파일 픽스처를 사용하여 경로를 설정한 다음 테스트 이후에 경로를 원래 경로로 재설정할 수 있습니다. 다음은 통상적인 파일 픽스처의 설정 코드와 해제 코드 골격의 한 예입니다.
function setupOnce(testCase) % do not change function name % set a new path, for example end function teardownOnce(testCase) % do not change function name % change back to original path, for example end
새로운 픽스처(Fixture) 함수. 각 로컬 테스트 함수에 대한 상태를 설정하거나 해제하려면 새로운 픽스처 함수를 사용하십시오. 이러한 새로운 픽스처 함수의 이름은 각각 setup
, teardown
이어야 합니다. 새로운 픽스처를 사용하여 테스트 전에 새 Figure를 가져오거나 테스트 후에 이 Figure를 닫을 수 있습니다. 다음은 통상적인 테스트 함수 레벨의 설정 코드와 해제 코드 골격의 한 예입니다.
function setup(testCase) % do not change function name % open a figure, for example end function teardown(testCase) % do not change function name % close figure, for example end
프로그램 목록 템플릿
%% Main function to generate tests function tests = exampleTest tests = functiontests(localfunctions); end %% Test Functions function testFunctionOne(testCase) % Test specific code end function testFunctionTwo(testCase) % Test specific code end %% Optional file fixtures function setupOnce(testCase) % do not change function name % set a new path, for example end function teardownOnce(testCase) % do not change function name % change back to original path, for example end %% Optional fresh fixtures function setup(testCase) % do not change function name % open a figure, for example end function teardown(testCase) % do not change function name % close figure, for example end
테스트 실행하기
함수 기반 테스트를 실행하면 테스트 프레임워크가 다음 작업을 수행합니다.
로컬 테스트 함수가 명시하는 테스트의 배열을 만듭니다.
setupOnce
함수가 명시된 경우 이 함수를 실행하여 시스템의 테스트 이전 상태를 설정합니다.각 테스트에 대해 해당하는 로컬 테스트 함수를 실행합니다.
setup
함수가 명시된 경우 로컬 테스트 함수를 실행하기 전에 이 함수를 먼저 실행합니다.teardown
함수가 명시된 경우 로컬 테스트 함수를 실행한 후에 이 함수를 실행합니다.teardownOnce
함수가 명시된 경우 이 함수를 실행하여 시스템의 테스트 이전 상태를 원래 상태로 되돌립니다.
명령 프롬프트에서 테스트를 실행하려면, MATLAB 테스트 파일을 입력값으로 지정해 runtests
함수를 사용하십시오. 예를 들어, 다음과 같이 입력합니다.
results = runtests('exampleTest.m')
또는, run
함수를 사용하여 테스트를 실행할 수 있습니다.
results = run(exampleTest)
테스트 실행에 대한 자세한 내용은 runtests
및 다양한 워크플로에 대한 테스트 실행하기 항목을 참조하십시오.
결과 분석하기
테스트 결과를 분석하려면 runtests
나 run
의 출력 구조체를 검토하십시오. 각 테스트의 결과에는 테스트 함수의 이름과, 테스트 함수의 통과, 실패, 혹은 완료 여부, 그리고 테스트 실행에 소요된 시간이 포함됩니다. 자세한 내용은 테스트 케이스 결과 분석하기 항목과 실패한 테스트 결과 분석하기 항목을 참조하십시오.
참고 항목
runtests
| functiontests
| localfunctions