В этом примере показано, как записать, что модульные тесты на MATLAB® функционируют quadraticSolver
.
В файле в вашей текущей папке создайте функциональный 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
функционируйте, создайте тестовый класс путем разделения на подклассы matlab.unittest.TestCase
класс. Добавьте свои тесты в methods
блокируйтесь с Test
атрибут. Порядок тестов в блоке не имеет значения.
classdef SolverTest < matlab.unittest.TestCase methods (Test) end end
Создайте метод тестирования testRealSolution
проверять тот quadraticSolver
возвращает правильные решения. Например, уравнение имеет действительные решения и . Вызовы метода quadraticSolver
с коэффициентами этого уравнения. Затем это использует verifyEqual
метод matlab.unittest.TestCase
сравнить выход функции, actSolution
, к желаемому выходу, expSolution
. Если проверка перестала работать, выполнение теста продолжается.
function testRealSolution(testCase) actSolution = quadraticSolver(1,-3,2); expSolution = [2,1]; testCase.verifyEqual(actSolution,expSolution) end
Создайте метод тестирования testImaginarySolution
проверять тот quadraticSolver
возвращает правильные мнимые решения. Например, уравнение имеет мнимые решения и .
function testImaginarySolution(testCase) actSolution = quadraticSolver(1,2,10); expSolution = [-1+3i, -1-3i]; testCase.verifyEqual(actSolution,expSolution) end
Создайте метод тестирования testNonNumericInput
проверять тот quadraticSolver
производит ошибку для нечисловых коэффициентов. Используйте verifyError
метод matlab.unittest.TestCase
чтобы протестировать это, функция выдает исключение, заданное ошибочным идентификатором 'quadraticSolver:InputMustBeNumeric'
.
function testNonNumericInput(testCase) testCase.verifyError(@()quadraticSolver(1,'-3',2), ... 'quadraticSolver:InputMustBeNumeric') end
Этот код предоставляет полное содержимое SolverTest
класс.
classdef SolverTest < matlab.unittest.TestCase methods(Test) function testRealSolution(testCase) actSolution = quadraticSolver(1,-3,2); expSolution = [2,1]; testCase.verifyEqual(actSolution,expSolution) end function testImaginarySolution(testCase) actSolution = quadraticSolver(1,2,10); expSolution = [-1+3i, -1-3i]; testCase.verifyEqual(actSolution,expSolution) end function testNonNumericInput(testCase) testCase.verifyError(@()quadraticSolver(1,'-3',2), ... 'quadraticSolver:InputMustBeNumeric') end end end
Запустите все тесты в SolverTest
класс.
testCase = SolverTest; res = run(testCase)
Running SolverTest ... Done SolverTest __________
res = 1×3 TestResult array with properties: Name Passed Failed Incomplete Duration Details Totals: 3 Passed, 0 Failed, 0 Incomplete. 1.4335 seconds testing time.
Запустите testRealSolution
метод.
testCase = SolverTest;
res = run(testCase,'testRealSolution')
Running SolverTest . Done SolverTest __________
res = TestResult with properties: Name: 'SolverTest/testRealSolution' Passed: 1 Failed: 0 Incomplete: 0 Duration: 0.0142 Details: [1×1 struct] Totals: 1 Passed, 0 Failed, 0 Incomplete. 0.01417 seconds testing time.