Запись простого теста Используя классы

В этом примере показано, как записать модульный тест на функцию MATLAB®, quadraticSolver.m.

Создание Функции 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

Создание определения класса SolverTest

Использовать 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 возвращает правильное значение для действительных решений. Например, уравнение$x^{2} - 3x + 2 = 0$ имеет действительные решения$x = 1$ и$x = 2$. Этот вызовы метода 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 возвращает правильное значение для мнимых решений. Например, уравнение$x^{2} - 2x + 10 = 0$ имеет мнимые решения$x = -1 + 3i$ и$x = -1 - 3i$. Добавьте эту функцию, 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

Запустите все тесты в 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.

Похожие темы

Для просмотра документации необходимо авторизоваться на сайте