Запись простого теста Используя функции

Можно протестировать программу MATLAB® путем определения модульных тестов в одном файле, который содержит основные функциональные и локальные тестовые функции. В функциональном тесте каждая локальная функция выполняет фрагмент программного обеспечения и квалифицирует правильность результата, к которому приводят. Для получения дополнительной информации о функциональных тестах, смотрите Запись Функциональные модульные тесты.

В этом примере показано, как записать функциональный тест, чтобы квалифицировать правильность функции, определяемой в файле в вашей текущей папке. quadraticSolver функционируйте берет в качестве входных параметров коэффициенты квадратичного полинома и возвращает корни того полинома. Если коэффициенты заданы как нечисловые значения, функция выдает ошибку.

function roots = quadraticSolver(a,b,c)
% quadraticSolver returns solutions to the
% quadratic equation a*x^2 + b*x + c = 0.

if ~isa(a,'numeric') || ~isa(b,'numeric') || ~isa(c,'numeric')
    error('quadraticSolver:InputMustBeNumeric', ...
        'Coefficients must be numeric.');
end

roots(1) = (-b + sqrt(b^2 - 4*a*c)) / (2*a);
roots(2) = (-b - sqrt(b^2 - 4*a*c)) / (2*a);

end

Создайте тесты

Протестировать quadraticSolver функционируйте, создайте тестовый файл quadraticSolverTest.m в вашей текущей папке. Затем задайте основную функцию и две локальных функции в файле, чтобы протестировать quadraticSolver против действительных и мнимых решений. Имя основных и локальных функций должно начинаться или заканчиваться словом "тест", который является нечувствительным к регистру. Кроме того, имя основной функции должно соответствовать имени вашего тестового файла.

Задайте основную функцию

Чтобы запустить функциональные модульные тесты, необходимо задать основную функцию, которая собирает все локальные тестовые функции в тестовый массив. Задайте основной функциональный quadraticSolverTest в вашем тестовом файле. Основные вызовы функции functiontests сгенерировать тестовый массив tests. Передайте localfunctions к functiontests автоматически сгенерировать cell-массив указателей на функцию к локальным функциям в вашем файле.

function tests = quadraticSolverTest
tests = functiontests(localfunctions);
end

Задайте локальные тестовые функции

Добавьте локальные функции в тестовый файл, чтобы протестировать quadraticSolver функция против действительных и мнимых решений. Порядок тестов в файле не имеет значения. Каждая локальная функция должна принять один вход testCase, который является matlab.unittest.FunctionTestCase объект. Среда тестирования автоматически генерирует этот объект. Функция использует объект выполнить проверки для тестирования значений и ответа на отказы.

Задайте локальную функцию testRealSolution проверять тот quadraticSolver возвращает правильные действительные решения для определенных коэффициентов. Например, уравнение x2-3x+2=0 имеет действительные решения x=1 и x=2. Вызовы функции quadraticSolver с коэффициентами этого уравнения. Затем это использует verifyEqual функция проверки, чтобы сравнить фактический выход actSolution к ожидаемому выходу expSolution.

function tests = solverTest
tests = functiontests(localfunctions);
end

function testRealSolution(testCase)
actSolution = quadraticSolver(1,-3,2);
expSolution = [2 1];
verifyEqual(testCase,actSolution,expSolution)
end

Задайте вторую локальную функцию testImaginarySolution проверять тот quadraticSolver возвращает правильные мнимые решения для определенных коэффициентов. Например, уравнение x2+2x+10=0 имеет мнимые решения x=-1+3i и x=-1-3i. Точно так же, как предыдущая функция, это вызовы функции quadraticSolver с коэффициентами этого уравнения, и затем использует verifyEqual функция проверки, чтобы сравнить фактический выход actSolution к ожидаемому выходу expSolution.

function tests = solverTest
tests = functiontests(localfunctions);
end

function testRealSolution(testCase)
actSolution = quadraticSolver(1,-3,2);
expSolution = [2 1];
verifyEqual(testCase,actSolution,expSolution)
end

function testImaginarySolution(testCase)
actSolution = quadraticSolver(1,2,10);
expSolution = [-1+3i -1-3i];
verifyEqual(testCase,actSolution,expSolution)
end

Запустите тесты в тестовом файле

Используйте runtests функционируйте, чтобы запустить тесты, заданные в quadraticSolverTest.m файл. В этом примере, обеих из тестовой передачи.

results = runtests('quadraticSolverTest.m')
Running quadraticSolverTest
..
Done quadraticSolverTest
__________
results = 
  1×2 TestResult array with properties:

    Name
    Passed
    Failed
    Incomplete
    Duration
    Details

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

Также можно запустить тесты с помощью run функция.

results = run(quadraticSolverTest)
Running quadraticSolverTest
..
Done quadraticSolverTest
__________
results = 
  1×2 TestResult array with properties:

    Name
    Passed
    Failed
    Incomplete
    Duration
    Details

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

Смотрите также

| |

Похожие темы