В этом примере показано, как записать модульный тест на функцию 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.