Можно протестировать программу 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
возвращает правильные действительные решения для определенных коэффициентов. Например, уравнение имеет действительные решения и . Вызовы функции 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
возвращает правильные мнимые решения для определенных коэффициентов. Например, уравнение имеет мнимые решения и . Точно так же, как предыдущая функция, это вызовы функции 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.
functiontests
| localfunctions
| runtests