Можно протестировать программу MATLAB ®, определив модульные тесты в одном файле, который содержит основную функцию и локальные тестовые функции. В функциональном тесте каждая локальная функция выполняет фрагмент программного обеспечения и определяет правильность полученного результата. Для получения дополнительной информации о функциональных тестах см. Раздел «Запись функциональных модульных тестов».
В этом примере показано, как записать функциональный тест, чтобы определить правильность функции, определенной в файле в текущей папке. The 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
function, создайте тестовый файл quadraticSolverTest.m
в текущей папке. Затем задайте основную функцию и две локальные функции в файле для тестирования quadraticSolver
против реальных и мнимых решений. Имя основной и локальных функций должно начинаться или заканчиваться словом «test», которое не учитывает регистр. Кроме того, имя основной функции должно соответствовать имени вашего тестового файла.
Чтобы запустить основанные на функции модульные тесты, вы должны задать главную функцию, которая собирает все локальные тестовые функции в тестовый массив. Определите основную функцию 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