Main Content

MATLAB 단위 테스트 컴파일하기

MATLAB® 단위 테스트 프레임워크를 사용하여 테스트를 작성할 때, 독립 실행형 애플리케이션을 만들어(MATLAB Compiler™ 필요) MATLAB이 설치되지 않은 타깃 머신에서 테스트를 실행할 수 있습니다.

  • MATLAB 코드를 컴파일하려면 compiler.build.standaloneApplication (MATLAB Compiler) 또는 mcc (MATLAB Compiler) 명령을 실행하거나 Application Compiler (MATLAB Compiler) 앱을 사용하십시오.

  • 독립 실행형 애플리케이션을 실행하려면 MATLAB Runtime을 설치하십시오. (Application Compiler 앱을 사용하는 경우 생성된 애플리케이션에 MATLAB Runtime 인스톨러를 포함할지 여부를 결정할 수 있습니다. 자세한 내용은 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.

독립 실행형 애플리케이션을 만들고 실행하는 방법에 대한 자세한 내용은 MATLAB 함수로부터 독립 실행형 애플리케이션 만들기 (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

참고 항목

(MATLAB Compiler) | | | | | (MATLAB Compiler)

관련 항목