exponenta event banner

matlab.unittest.plugins. CodeCoveragePlugin.forFile

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

Конструкция CodeCoveragePlugin для файлов

Описание

пример

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

Входные аргументы

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

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

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

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

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

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

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

Примеры

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

В рабочей папке создайте файл 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.

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