exponenta event banner

Компиляция модульных тестов MATLAB

При написании тестов с использованием платформы модульного тестирования MATLAB ® можно создать автономное приложение (требуется MATLAB Compiler™) для выполнения тестов на целевых машинах, на которых не установлен MATLAB:

  • Чтобы скомпилировать код MATLAB, запустите compiler.build.standaloneApplication (Компилятор MATLAB) или mcc (Компилятор MATLAB) или используйте приложение Компилятор приложений (Компилятор MATLAB).

  • Для запуска автономных приложений установите среду выполнения MATLAB. (При использовании приложения Application Compiler можно решить, включать ли программу установки MATLAB Runtime installer в созданное приложение.) Дополнительные сведения см. в разделе Установка и настройка среды выполнения MATLAB (компилятор MATLAB).

Компилятор MATLAB поддерживает только модульные тесты на основе классов. (Невозможно скомпилировать модульные тесты на основе сценариев или функций.) Кроме того, компилятор MATLAB в настоящее время не поддерживает тесты, созданные с использованием платформы тестирования производительности.

Запуск тестов с автономными приложениями

В этом примере показано, как создать автономное приложение из модульных тестов и запустить созданное приложение из окна терминала (на платформе Microsoft ® Windows ®).

В файле с именем TestRand.m в текущей папке создайте класс параметризованного теста, который будет тестировать генератор случайных чисел MATLAB (см. «Сводка по определению класса»

В текущей папке создайте runMyTests функция. Эта функция создает набор тестов из TestRand класс, запускает тесты и отображает результаты теста.

function runMyTests
suite = matlab.unittest.TestSuite.fromClass(?TestRand);
runner = matlab.unittest.TestRunner.withNoPlugins;
results = runner.run(suite);
disp(results)
end

Скомпилировать runMyTests в автономное приложение, запустив mcc в окне команд. Компилятор MATLAB создает приложение в текущей папке.

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) pragma информирует компилятор MATLAB о том, что parallel.Pool(Панель инструментов параллельных вычислений) должен быть включен в компиляцию, чтобы обеспечить доступ к параллельному пулу.

Например, рассмотрим тесты в файле TestRand.m. Для параллельного выполнения этих тестов можно создать автономное приложение, скомпилировав эту функцию.

function runMyTestsInParallel
%#function parallel.Pool
results = runtests('TestRand.m','UseParallel',true);
disp(results)
end

Скомпилировать функцию в автономное приложение с помощью mcc команда. Чтобы дать команду компилятору MATLAB включить тестовый файл в приложение, укажите имя файла с помощью -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) | (Компилятор MATLAB)

Связанные темы