MATLAB 단위 테스트 컴파일하기
MATLAB® 단위 테스트 프레임워크를 사용하여 테스트를 작성할 때, 독립 실행형 응용 프로그램을 만들어(MATLAB Compiler™ 필요) MATLAB이 설치되지 않은 타깃 머신에서 테스트를 실행할 수 있습니다.
MATLAB 코드를 컴파일하려면
compiler.build.standaloneApplication
(MATLAB Compiler) 또는mcc
(MATLAB Compiler) 명령을 실행하거나 응용 프로그램 컴파일러 (MATLAB Compiler) 앱을 사용하십시오.독립 실행형 응용 프로그램을 실행하려면 MATLAB Runtime을 설치하십시오. (응용 프로그램 컴파일러 앱을 사용하는 경우 생성된 응용 프로그램에 MATLAB Runtime 인스톨러를 포함할지 여부를 결정할 수 있습니다. 자세한 내용은 Install and Configure MATLAB Runtime (MATLAB Compiler) 항목을 참조하십시오.
MATLAB Compiler는 클래스 기반 단위 테스트만 지원합니다. (스크립트 기반 단위 테스트 또는 함수 기반 단위 테스트는 컴파일할 수 없습니다.) 또한 MATLAB Compiler는 현재 성능 테스트 프레임워크를 사용하여 작성된 테스트를 지원하지 않습니다.
독립 실행형 응용 프로그램으로 테스트 실행하기
이 예제에서는 단위 테스트에서 독립 실행형 응용 프로그램을 만들고 생성된 응용 프로그램을 터미널 창(Microsoft® Windows® 플랫폼)에서 실행하는 방법을 보여줍니다.
현재 폴더의 TestRand.m
파일에서 MATLAB 난수 생성기를 테스트하는 파라미터화된 테스트 클래스를 생성합니다(TestRand 클래스 정의 요약 참조).
현재 폴더에서 runMyTests
함수를 만듭니다. 이 함수는 TestRand
클래스에서 테스트 스위트를 만들고 테스트를 실행하고 테스트 결과를 표시합니다.
function runMyTests suite = matlab.unittest.TestSuite.fromClass(?TestRand); runner = matlab.unittest.TestRunner.withNoPlugins; results = runner.run(suite); disp(results) end
명령 창에서 mcc
명령을 실행하여 runMyTests
함수를 독립 실행형 응용 프로그램으로 컴파일합니다. MATLAB Compiler는 현재 폴더에 응용 프로그램을 생성합니다.
mcc -m runMyTests
터미널 창을 열고 독립 실행형 응용 프로그램을 패키징한 폴더로 이동하여 응용 프로그램을 실행합니다.
C:\work>runMyTests 1x1200 TestResult array with properties: Name Passed Failed Incomplete Duration Details Totals: 1200 Passed, 0 Failed, 0 Incomplete. 3.11 seconds testing time.
독립 실행형 응용 프로그램을 만들고 실행하는 방법에 대한 자세한 내용은 Create Standalone Application from MATLAB Function (MATLAB Compiler) 항목을 참조하십시오.
독립 실행형 응용 프로그램을 사용해 병렬로 테스트 실행하기
R2020b부터 테스트 병렬 실행을 지원하는 독립 실행형 응용 프로그램을 만들 수 있습니다(Parallel Computing Toolbox™ 필요). 이 기능을 사용하려면 테스트 실행을 트리거하는 파일에서 지시문 %#function parallel.Pool
을 사용해야 합니다. %#function
(MATLAB Compiler) 프라그마는 병렬 풀에 액세스하기 위해 parallel.Pool
(Parallel Computing Toolbox) 객체를 컴파일에 포함해야 함을 MATLAB Compiler에 알립니다.
예를 들어, 파일 TestRand.m
의 테스트를 가정해 보겠습니다. 이 함수를 컴파일하여 이러한 테스트를 병렬로 실행하는 독립 실행형 응용 프로그램을 만들 수 있습니다.
function runMyTestsInParallel %#function parallel.Pool results = runtests('TestRand.m','UseParallel',true); disp(results) end
mcc
명령을 사용하여 함수를 독립 실행형 응용 프로그램으로 컴파일합니다. 응용 프로그램에 테스트 파일을 포함하도록 MATLAB Compiler에 지시하려면 -a
옵션을 사용하여 파일 이름을 지정하십시오.
mcc -m runMyTestsInParallel -a TestRand.m
TestRand 클래스 정의 요약
다음 코드는 TestRand
클래스의 전체 내용을 제공합니다.
classdef TestRand < matlab.unittest.TestCase properties (TestParameter) dim1 = createDimensionSizes; dim2 = createDimensionSizes; dim3 = createDimensionSizes; type = {'single','double'}; end methods (Test) function testRepeatable(testCase,dim1,dim2,dim3) state = rng; firstRun = rand(dim1,dim2,dim3); rng(state) secondRun = rand(dim1,dim2,dim3); testCase.verifyEqual(firstRun,secondRun); end function testClass(testCase,dim1,dim2,type) testCase.verifyClass(rand(dim1,dim2,type),type) end end end function sizes = createDimensionSizes % Create logarithmically spaced sizes up to 100 sizes = num2cell(round(logspace(0,2,10))); end
참고 항목
mcc
(MATLAB Compiler) | run (TestRunner)
| run (TestSuite)
| runtests
| runInParallel
| compiler.build.standaloneApplication
(MATLAB Compiler)
관련 항목
- 단위 테스트를 작성하는 방법
- Create Standalone Application from MATLAB Function (MATLAB Compiler)