coder.runTest

Запустите тест, заменяющий вызовы функций MATLAB с вызовами MEX-функций

Синтаксис

coder.runTest(test,fcn)
coder.runTest(test,fcns,mexfcn)
coder.runTest(test,mexfile)

Описание

пример

coder.runTest(test,fcn) выполнения test, заменяющий вызовы fcn с вызовами скомпилированной версии fcn. test является именем файла для функции MATLAB®, скрипта или модульных тестов, основанных на классах, которые вызывают функцию MATLAB fcn. Скомпилированная версия fcn должна быть в MEX-функции, которая имеет имя по умолчанию. Имя по умолчанию является именем, заданным fcn, сопровождаемым _mex.

пример

coder.runTest(test,fcns,mexfcn) замены вызывают к заданным функциям MATLAB с вызовами скомпилированных версий функций. MEX-функция mexfcn должна содержать скомпилированные версии всех заданных функций MATLAB.

пример

coder.runTest(test,mexfile) заменяет вызов функции MATLAB с вызовом скомпилированной версии функции, когда скомпилированная версия функции находится в mexfile. mexfile включает специфичное для платформы расширение файла. Если mexfile не содержит скомпилированную версию функции, coder.runTest запускает исходную функцию MATLAB. Если вы не хотите задавать отдельные функции MATLAB, чтобы заменить, используйте этот синтаксис.

Примеры

свернуть все

Используйте coder.runTest, чтобы запустить тестовый файл. Задайте замену одной функции MATLAB со скомпилированной версией. Вы не обеспечиваете имя MEX-функции, которая содержит скомпилированную версию. Поэтому coder.runTest ищет MEX-функцию, которая имеет имя по умолчанию.

В локальной, перезаписываемой папке создайте функцию MATLAB, myfun.

function y = myfun(u,v) %#codegen
y = u+v;
end

В той же папке создайте тестовую функцию, mytest1, который вызывает myfun.

function mytest1
c = myfun(10,20);
disp(c);
end

Запустите тестовую функцию в MATLAB.

mytest1
    30

Сгенерируйте MEX-функцию для myfun.

codegen myfun -args {0,0}

В текущей папке codegen генерирует MEX-функцию, которая имеет имя по умолчанию, myfun_mex.

Запустите coder.runTest. Укажите, что вы хотите запустить тестовый файл mytest1. Задайте замену myfun со скомпилированной версией в myfun_mex.

coder.runTest('mytest1','myfun')
    30

Результаты эквивалентны, когда вы запускаете mytest1 в командной строке MATLAB.

Используйте coder.runTest, чтобы запустить тестовый файл. Задайте замену двух функций с вызовами скомпилированных версий. Задайте MEX-функцию, которая содержит скомпилированные версии функций.

В локальной перезаписываемой папке создайте функцию MATLAB, myfun1.

function y = myfun1(u) %#codegen
y = u;
end

В той же папке создайте другую функцию MATLAB, myfun2.

function y = myfun2(u, v) %#codegen
y = u + v;
end

В той же папке создайте тестовую функцию, которая вызывает myfun1 и myfun2.

function mytest2
c1 = myfun1(10);
disp(c1)
c2 = myfun2(10,20);
disp(c2)
end

Запустите тестовую функцию.

mytest2
    10

    30

Сгенерируйте MEX-функцию для myfun1 и myfun2. Используйте опцию -o, чтобы задать имя сгенерированной MEX-функции.

codegen -o mymex  myfun1 -args {0} myfun2 -args {0,0}

Запустите coder.runTest. Укажите, что вы хотите запустить mytest2. Укажите, что вы хотите заменить вызовы myfun1 и myfun2 с вызовами скомпилированных версий в MEX-функции mymex.

coder.runTest('mytest2',{'myfun1','myfun2'},'mymex')
    10

    30

Результаты эквивалентны, когда вы запускаете mytest2 в командной строке MATLAB.

Используйте coder.runTest, чтобы запустить тест, который заменяет вызовы функций MATLAB в тесте с вызовами скомпилированных версий. Задайте имя файла для MEX-функции, которая содержит скомпилированные версии функций.

В локальной перезаписываемой папке создайте функцию MATLAB, myfun1.

function y = myfun1(u) %#codegen
y = u;
end

В той же папке создайте другую функцию MATLAB, myfun2.

function y = myfun2(u, v) %#codegen
y = u + v;
end

В той же папке создайте тестовую функцию, которая вызывает myfun1 и myfun2.

function  mytest2
c1 = myfun1(10);
disp(c1)
c2 = myfun2(10,20);
disp(c2)
end

Запустите тест.

mytest2
    10

    30

Сгенерируйте MEX-функцию для myfun1 и myfun2. Используйте опцию -o, чтобы задать имя сгенерированной MEX-функции.

codegen -o mymex  myfun1 -args {0} myfun2 -args {0,0}

Запустите coder.runTest. Укажите, что вы хотите запустить mytest2. Укажите, что вы хотите заменить вызовы функций, вызванных mytest2 с вызовами скомпилированных версий в mymex. Задайте полное имя файла MEX включая специфичное для платформы расширение. Используйте mexext, чтобы получить специфичное для платформы расширение.

coder.runTest('mytest2',['mymex.', mexext])
    10

    30

Результаты эквивалентны, когда вы запускаете mytest2 в командной строке MATLAB.

Запустите coder.runTest с модульными тестами, основанными на классах.

Запишите функциональный addOne, который добавляет 1 к входу.

function y = addOne(x)
%#codegen
y = x + 1;
end

Запишите классифицируемый - базирующийся модульный тест, который проверяет значение, возвращенное addOne, когда вход равняется 1 и когда входом является pi.

classdef TestAddOne < matlab.unittest.TestCase
    
    methods (Test)
        
        function reallyAddsOne(testCase)
            x = 1;
            y = addOne(x);
            testCase.verifyEqual(y,2);
        end
        
        function addsFraction(testCase)
            x = pi;
            y = addOne(x);
            testCase.verifyEqual(y,x+1);
        end
    end
end

Запустите модульные тесты, основанные на классах, заменив вызовы addOne с вызовами addOne_mex.

coder.runTest('TestAddOne', 'addOne')
Running TestAddOne
..
Done TestAddOne
__________


testbenchResult = 

  1×2 TestResult array with properties:

    Name
    Passed
    Failed
    Incomplete
    Duration
    Details

Totals:
   2 Passed, 0 Failed, 0 Incomplete.
   0.28516 seconds testing time.

Входные параметры

свернуть все

Имя файла для функции MATLAB, скрипта или модульных тестов, основанных на классах, которые вызывают функции MATLAB, на которые вы хотите протестировать сгенерированный MEX coder.runTest, заменяет вызовы функций с вызовами сгенерированного MEX.

Пример: 'mytest'

Имя функции MATLAB, чтобы заменить при запущении теста. coder.runTest заменяет вызовы этой функции с вызовами скомпилированной версии этой функции.

Пример: 'myfun'

Имена функций MATLAB, чтобы заменить при запущении теста. coder.runTest заменяет вызовы этих функций с вызовами скомпилированных версий этих функций.

Задайте одну функцию как вектор символов или скаляр строки.

Пример: 'myfun'

Пример: "myfun"

Задайте несколько функций как массив ячеек из символьных векторов. Перед использованием coder.runTest, компиляция эти функции в одну MEX-функцию.

Пример: {'myfun1', 'myfun2', 'myfun3'}

Имя MEX-функции сгенерировано для одной или нескольких функций.

Сгенерируйте эту MEX-функцию с помощью приложения MATLAB Coder™ или функции codegen.

Пример: 'mymex'

Имя файла и специфичное для платформы расширение файла MEX для одной или нескольких функций. Используйте mexext, чтобы получить специфичное для платформы расширение файла MEX.

Сгенерируйте этот файл MEX с помощью приложения MATLAB Coder или функции codegen.

Пример: ['myfunmex.', mexext]

Типы данных: char

Советы

  • coder.runTest не возвращает выходные параметры. Чтобы видеть результаты испытаний, в тесте, включают код, который отображает результаты.

  • Сравнить поведение функции MATLAB и MEX:

    • Запустите тест в MATLAB.

    • Используйте codegen, чтобы сгенерировать MEX-функцию.

    • Используйте coder.runTest, чтобы запустить тест, заменяющий вызов исходной функции с вызовом скомпилированной версии в MEX-функции.

  • Перед использованием coder.runTest, чтобы протестировать несколько функций, скомпилируйте функции MATLAB в одну MEX-функцию.

  • Если вы используете синтаксис coder.runTest(test, mexfile), используйте mexext, чтобы добраться, специфичный для платформы файл MEX называют расширение. Например:

    coder.runTest('my_test', ['mymexfun.', mexext])

  • Если ошибки происходят во время теста, можно отладить код с помощью информации о стеке вызовов.

  • Можно объединить генерацию MEX и тестирующий за один шаг путем выполнения codegen с опцией -test. Например, следующий код генерирует MEX-функцию для myfunction и вызывает тестовый файл myfunction_test, заменяя вызовы myfunction с вызовами myfunction_mex.

    codegen myfunction -test myfunction_test 

Представленный в R2012a