Сгенерируйте Программные продукты, используя MATLAB Модульного теста плагины

Среда модульного тестирования MATLAB ® позволяет вам настроить исполнитель тестов с помощью классов плагинов в matlab.unittest.plugins пакет. Можно использовать некоторые из этих классов плагинов для генерации отчетов о тестах и программных продуктов, совместимых с платформами непрерывного интегрирования (CI):

  • matlab.unittest.plugins.TestReportPlugin создает плагин, который направляет исполнителю тестов на составление отчета о результатах тестирования. Используя этот плагин, вы можете создавать читаемые и архивируемые отчеты о тестах.

  • matlab.unittest.plugins.TAPPlugin создает плагин, который создает поток протокола Test Anything Protocol (TAP).

  • matlab.unittest.plugins.XMLPlugin создает плагин, который производит выход в стиле JUnit.

  • matlab.unittest.plugins.CodeCoveragePlugin создает плагин, который формирует отчет о покрытии линии для исходного кода MATLAB.

Вы также можете генерировать CI-совместимые программные продукты, когда запускаете тестовые примеры Test™ Simulink ®. Для получения дополнительной информации смотрите Выходные результаты для систем непрерывного интегрирования (Simulink Test).

Запуск тестов с настраиваемым исполнителем тестов

В этом примере показов, как создать тестовый набор и настроить исполнителя тестов для отчета о ходе тестирования запуска и получения совместимых с CI программными продуктами.

В файле в текущей папке создайте функцию quadraticSolver, который возвращает корни квадратичных полиномов.

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

Для тестирования quadraticSolver, создайте тестовый класс SolverTest в текущей папке.

classdef SolverTest < matlab.unittest.TestCase
    methods(Test)
        function realSolution(testCase)
            actSolution = quadraticSolver(1,-3,2);
            expSolution = [2,1];
            testCase.verifyEqual(actSolution,expSolution)
        end
        function imaginarySolution(testCase)
            actSolution = quadraticSolver(1,2,10);
            expSolution = [-1+3i, -1-3i];
            testCase.verifyEqual(actSolution,expSolution)
        end
        function nonnumericInput(testCase)
            testCase.verifyError(@()quadraticSolver(1,'-3',2), ...
                'quadraticSolver:InputMustBeNumeric')
        end
    end
end

В командной строке создайте тестовый набор из SolverTest класс.

suite = testsuite('SolverTest');

Создайте TestRunner образец, который производит выход с помощью matlab.unittest.TestRunner.withTextOutput способ. Этот метод позволяет вам задать максимальный уровень подробностей для записанной диагностики и уровень отображения для деталей тестового события. В этом примере исполнитель тестов отображает прогресс тестового запуска в matlab.unittest.Verbosity.Detailed уровень (уровень 3).

import matlab.unittest.TestRunner
runner = TestRunner.withTextOutput('OutputDetail',3);

Создайте TestReportPlugin образец, который отправляет выход в файл testreport.pdf и добавьте плагин к исполнителю тестов.

import matlab.unittest.plugins.TestReportPlugin
pdfFile = 'testreport.pdf';
p1 = TestReportPlugin.producingPDF(pdfFile);
runner.addPlugin(p1)

Создайте XMLPlugin образец, который записывает выход в формате JUnit в файл junittestresults.xml. Затем добавьте плагин к исполнителю тестов.

import matlab.unittest.plugins.XMLPlugin
xmlFile = 'junittestresults.xml';
p2 = XMLPlugin.producingJUnitFormat(xmlFile);
runner.addPlugin(p2)

Создайте плагин, который выводит отчет о покрытии кода Cobertura для исходного кода в файле quadraticSolver.m. Проинструктируйте плагин записать его выход в файл cobertura.xml и добавьте плагин к исполнителю тестов.

import matlab.unittest.plugins.CodeCoveragePlugin
import matlab.unittest.plugins.codecoverage.CoberturaFormat
sourceCodeFile = 'quadraticSolver.m';
reportFile = 'cobertura.xml';
reportFormat = CoberturaFormat(reportFile);
p3 = CodeCoveragePlugin.forFile(sourceCodeFile,'Producing',reportFormat);
runner.addPlugin(p3)

Запустите тесты.

results = runner.run(suite)
 Running SolverTest
  Setting up SolverTest
  Done setting up SolverTest in 0 seconds
   Running SolverTest/realSolution
   Done SolverTest/realSolution in 0.36683 seconds
   Running SolverTest/imaginarySolution
   Done SolverTest/imaginarySolution in 0.016272 seconds
   Running SolverTest/nonnumericInput
   Done SolverTest/nonnumericInput in 0.17842 seconds
  Tearing down SolverTest
  Done tearing down SolverTest in 0 seconds
 Done SolverTest in 0.56153 seconds
__________

Generating test report. Please wait.
    Preparing content for the test report.
    Adding content to the test report.
    Writing test report to file.
Test report has been saved to:
 /tmp/BR2021ad_1630854_168990/mlx_to_docbook54/tpd01fe35a/matlab-ex57066699/testreport.pdf
results = 
  1x3 TestResult array with properties:

    Name
    Passed
    Failed
    Incomplete
    Duration
    Details

Totals:
   3 Passed, 0 Failed, 0 Incomplete.
   0.56153 seconds testing time.

Список файлов в текущей папке. Три указанных программных продуктов хранятся в текущей папке.

dir 
.                                                       
..                                                      
GenerateArtifactsUsingMATLABUnitTestPluginsExample.mlx  
SolverTest.m                                            
cobertura.xml                                           
junittestresults.xml                                    
quadraticSolver.m                                       
testreport.pdf                                          

Можно обработать сгенерированные программные продукты на платформах CI. Можно также просмотреть содержимое сгенерированных программных продуктов. Для примера откройте отчет о тесте PDF.

open('testreport.pdf')

См. также

| | | | |

Похожие темы

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