Main Content

함수 기반 단위 테스트

테스트 함수 생성하기

테스트 함수는 메인 함수와 개별 로컬 테스트 함수가 들어 있는 단일 MATLAB® 파일입니다. 선택적으로, 파일 픽스처(Fixture)와 새로운 픽스처 함수를 포함할 수 있습니다. 파일 픽스처는 파일에 있는 모든 테스트에서 공유되는 설정 함수와 해제 함수로 구성됩니다. 이 함수는 테스트 파일당 한 번 실행됩니다. 새로운 픽스처는 각 로컬 테스트 함수의 이전과 이후에 실행되는 설정 함수와 해제 함수로 구성됩니다.

메인 함수 생성하기

메인 함수는 모든 로컬 테스트 함수를 하나의 테스트 배열로 모읍니다. 메인 함수의 이름은 테스트 파일의 이름에 해당하며 'test'(대/소문자 구분 안 함)라는 단어로 시작하거나 끝나야 합니다. 파일 이름이 'test'라는 단어로 시작하거나 끝나지 않으면 파일에 포함된 테스트가 어떤 경우에는 무시될 수 있습니다. 이 예제에서 MATLAB 파일은 exampleTest.m입니다. 테스트 배열 tests를 생성하려면 메인 함수가 functiontests를 호출해야 합니다. localfunctionsfunctiontests에 대한 입력값으로 사용하여 파일 내의 모든 로컬 함수에 대한 함수 핸들의 셀형 배열을 자동으로 생성하십시오. 다음은 일반적인 메인 함수입니다.

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) 함수.  파일 내 모든 테스트에서 설정 함수와 해제 함수를 공유하려면 파일 픽스처 함수를 사용하십시오. 파일 픽스처 함수의 이름은 각각 setupOnceteardownOnce여야 합니다. 이 함수는 각 파일에 대해 한 번 실행됩니다. 테스트하기 전에 파일 픽스처를 사용하여 경로를 설정한 다음 테스트 이후에 경로를 원래 경로로 재설정할 수 있습니다. 다음은 통상적인 파일 픽스처의 설정 코드와 해제 코드 골격의 한 예입니다.

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

테스트 실행하기

함수 기반 테스트를 실행하면 테스트 프레임워크가 다음 작업을 수행합니다.

  1. 로컬 테스트 함수가 명시하는 테스트의 배열을 만듭니다.

  2. setupOnce 함수가 명시된 경우 이 함수를 실행하여 시스템의 테스트 이전 상태를 설정합니다.

  3. 각 테스트에 대해 해당하는 로컬 테스트 함수를 실행합니다. setup 함수가 명시된 경우 로컬 테스트 함수를 실행하기 전에 이 함수를 먼저 실행합니다. teardown 함수가 명시된 경우 로컬 테스트 함수를 실행한 후에 이 함수를 실행합니다.

  4. teardownOnce 함수가 명시된 경우 이 함수를 실행하여 시스템의 테스트 이전 상태를 원래 상태로 되돌립니다.

Workflow for running function-based tests

명령 프롬프트에서 테스트를 실행하려면, MATLAB 테스트 파일을 입력값으로 지정해 runtests 함수를 사용하십시오. 예를 들어, 다음과 같이 입력합니다.

results = runtests('exampleTest.m')

또는, run 함수를 사용하여 테스트를 실행할 수 있습니다.

results = run(exampleTest)

테스트 실행에 대한 자세한 내용은 runtests다양한 워크플로에 대한 테스트 실행하기 항목을 참조하십시오.

결과 분석하기

테스트 결과를 분석하려면 runtestsrun의 출력 구조체를 검토하십시오. 각 테스트의 결과에는 테스트 함수의 이름과, 테스트 함수의 통과, 실패, 혹은 완료 여부, 그리고 테스트 실행에 소요된 시간이 포함됩니다. 자세한 내용은 테스트 케이스 결과 분석하기 항목과 실패한 테스트 결과 분석하기 항목을 참조하십시오.

참고 항목

| |

관련 항목