matlab.unittest.plugins. CodeCoveragePlugin.forFile

Класс: matlab.unittest.plugins. CodeCoveragePlugin
Пакет: matlab.unittest.plugins

Создайте CodeCoveragePlugin для файлов

Синтаксис

matlab.unittest.plugins. CodeCoveragePlugin.forFile (файл, 'Создание', reportFormat)

Описание

пример

matlab.unittest.plugins. CodeCoveragePlugin.forFile (файл, 'Создание', reportFormat) создает плагин, который представляет отчет покрытия кода для одного или нескольких.m или .mlx файлов.

Входные параметры

развернуть все

Имя файлов, чтобы анализировать, заданный как вектор символа, массив ячеек из символьных векторов, представляет в виде строки скаляр или массив строк. file является абсолютным или относительным путем одному или нескольким файлы .mlx или .m.

Пример: '../thisTest. m

Пример: {'Test_featureB.m', 'Test_featureA.m'}

Типы данных: char | string

Формат отчета, заданный как экземпляр matlab.unittest.plugins.codecoverage.CoberturaFormat class.

('CoverageResults.xml') Пример: matlab.unittest.plugins.codecoverage. COBERTURAFORMAT

Примеры

развернуть все

В вашей рабочей папке создайте файл quadraticSolver.m со следующей функцией.

function roots = quadraticSolver(a,b,c)
    % quadraticSolver returns solutions to the
    % quadratic equation a*x^2 + b*x + c = 0.
    checkInputs
    roots(1) = (-b + sqrt(b^2 - 4*a*c)) / (2*a);
    roots(2) = (-b - sqrt(b^2 - 4*a*c)) / (2*a);
    
    function checkInputs
        if ~isa(a,'numeric') || ~isa(b,'numeric') || ~isa(c,'numeric')
            error('quadraticSolver:InputMustBeNumeric', ...
                'Coefficients must be numeric.')
        end
    end
end

Создайте тестовый класс для квадратичного решателя в ForFileSolverTest.m m.

classdef ForFileSolverTest < 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

В командной строке создайте тестовый набор для ForFileSolverTest.m и создайте исполнителя тестов.

import matlab.unittest.TestRunner

testFile = 'ForFileSolverTest.m';
suite = testsuite(testFile);
runner = TestRunner.withTextOutput;

Создайте плагин, который выводит отчет покрытия кода для исходного кода в формате Cobertura.

import matlab.unittest.plugins.CodeCoveragePlugin
import matlab.unittest.plugins.codecoverage.CoberturaFormat

sourceCodeFile = 'quadraticSolver.m';
reportFile = 'CoverageResults.xml';
reportFormat = CoberturaFormat(reportFile);
plugin = CodeCoveragePlugin.forFile(sourceCodeFile,'Producing',reportFormat);

Добавьте плагин к исполнителю тестов и запустите тесты.

runner.addPlugin(plugin);
result = runner.run(suite);
Running ForFileSolverTest
..
Done ForFileSolverTest
__________

Отобразите содержимое файла с результатами покрытия кода.

disp(fileread(reportFile))
<?xml version="1.0" encoding="utf-8"?>
<coverage branch-rate="NaN" branches-covered="NaN" branches-valid="NaN" complexity="NaN" line-rate="0.8" lines-covered="4" lines-valid="5" timestamp="737000.4343" version="NaN">
   <sources>
      <source>C:\work\</source>
   </sources>
   <packages>
      <package branch-rate="NaN" complexity="NaN" line-rate="0.8" name="">
         <classes>
            <class branch-rate="NaN" complexity="NaN" filename="quadraticSolver.m" line-rate="0.8" name="quadraticSolver">
               <methods/>
               <lines>
                  <line branch="NaN" condition-coverage="NaN" hits="2" number="4"/>
                  <line branch="NaN" condition-coverage="NaN" hits="2" number="5"/>
                  <line branch="NaN" condition-coverage="NaN" hits="2" number="6"/>
                  <line branch="NaN" condition-coverage="NaN" hits="2" number="9"/>
                  <line branch="NaN" condition-coverage="NaN" hits="0" number="10"/>
               </lines>
            </class>
         </classes>
      </package>
   </packages>
</coverage>

Введенный в R2017b

Была ли эта тема полезной?