Скомпилируйте модульные тесты 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 Class Definition Summary).

В текущей папке создайте 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 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) прагма сообщает MATLAB Compiler, что parallel.Pool Объект (Parallel Computing Toolbox) должен быть включен в компиляцию, чтобы предоставить доступ к параллельному пулу.

Например, рассмотрите тесты в файле 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)

Похожие темы