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

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

Запустите все тесты в 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.35369 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.0109
       Details: [1x1 struct]

Totals:
   1 Passed, 0 Failed, 0 Incomplete.
   0.010942 seconds testing time.

Похожие темы