Когда вы пишете тесты с помощью 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
класс.
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
run (TestRunner)
| run (TestSuite)
| runInParallel
| runtests
| compiler.build.standaloneApplication
(MATLAB Compiler) | mcc
(компилятор MATLAB)