В этом примере показано, как записать модульный тест на функцию MATLAB®, quadraticSolver.m.
Следующая функция MATLAB решает квадратные уравнения. Создайте эту функцию в папке на вашем пути MATLAB.
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
Использовать matlab.unittest среда, запишите функции MATLAB (тесты) в форме теста, класс, выведенный из matlab.unittest.TestCase.
Создайте подкласс, SolverTest.
% Copyright 2015 The MathWorks, Inc. classdef SolverTest < matlab.unittest.TestCase methods (Test) end end
Следующие шаги показывают, как создать определенные тесты. Поместите эти тесты в methods блокируйтесь с (Test) атрибут.
Создайте метод тестирования, testRealSolution, проверять тот quadraticSolver возвращает правильное значение для действительных решений. Например, уравнение
имеет действительные решения
и
. Этот вызовы метода quadraticSolver с входными параметрами этого уравнения. Решение, expSolution, [2,1].
Используйте matlab.unittest.TestCase метод, verifyEqual сравнить выход функции, actSolution, к желаемому выходу, expSolution. Если проверка перестала работать, тест продолжает выполнение.
% Copyright 2015 The MathWorks, Inc. function testRealSolution(testCase) actSolution = quadraticSolver(1,-3,2); expSolution = [2,1]; testCase.verifyEqual(actSolution,expSolution) end
Добавьте эту функцию в methods (Test) блок.
Создайте тест, чтобы проверить тот quadraticSolver возвращает правильное значение для мнимых решений. Например, уравнение
имеет мнимые решения
и
. Добавьте эту функцию, testImaginarySolution, в methods (Test) блок.
% Copyright 2015 The MathWorks, Inc. function testImaginarySolution(testCase) actSolution = quadraticSolver(1,2,10); expSolution = [-1+3i, -1-3i]; testCase.verifyEqual(actSolution,expSolution) end
Порядок тестов в блоке не имеет значения.
Следующим является полный SolverTest определение класса. Сохраните этот файл в папке на своем пути MATLAB.
classdef SolverTest < matlab.unittest.TestCase % SolverTest tests solutions to the quadratic equation % a*x^2 + b*x + c = 0 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 end end
Запустите все тесты в SolverTest файл определения класса.
testCase = SolverTest; res = run(testCase)
Running SolverTest
..
Done SolverTest
__________
res =
1x2 TestResult array with properties:
Name
Passed
Failed
Incomplete
Duration
Details
Totals:
2 Passed, 0 Failed, 0 Incomplete.
0.3031 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.0086
Details: [1x1 struct]
Totals:
1 Passed, 0 Failed, 0 Incomplete.
0.008623 seconds testing time.