exponenta event banner

matlab.unittest.plugins.

Пакет: matlab.unittest.plugins

Подключаемый модуль, который создает отчет о результатах тестирования

Описание

TestReportPlugin создает подключаемый модуль, который управляет TestRunner для получения отчета о результатах тестирования. С помощью этого плагина можно создавать читаемые и архивируемые отчеты о тестах.

Строительство

Создать экземпляр TestReportPlugin используя один из своих статических методов:

  • Для создания .docx отчет, используйте producingDOCX статический метод.

  • Для создания .html отчет, используйте producingHTML статический метод.

  • Для создания PDF отчет, используйте producingPDF статический метод.

Свойства

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

Это свойство доступно только для чтения.

Индикатор, если включен текстовый вывод из окна команд, указанный как false или true (logical 0 или 1). По умолчанию IncludeCommandWindowText является false и вывод текста из окна команд исключается из отчета. Чтобы включить текст окна команд в отчет, укажите IncludeCommandWindowText как true при строительстве плагина.

Это свойство доступно только для чтения.

Индикатор включения диагностики прохождения событий, указанный как false или true (logical 0 или 1). По умолчанию IncludePassingDiagnostics является false и диагностику от прохождения событий исключают из выходных данных. Чтобы включить в вывод диагностику по проходящим событиям, укажите IncludePassingDiagnostics как true при строительстве плагина.

Это свойство доступно только для чтения.

Максимальный уровень детализации для регистрируемой диагностики, включенной плагином, возвращаемый как matlab.unittest.Verbosity объект перечисления. Плагин включает диагностику, которая регистрируется на этом уровне и ниже. По умолчанию это свойство имеет значение matlab.unittest.Verbosity.Terse. Во время построения плагина можно указать другой уровень регистрации.

Диагностика в журнале - это диагностика, поставляемая в среду тестирования с вызовом log (TestCase) или log (Fixture) способ.

Методы

producingDOCXСоздает подключаемый модуль .docx отчет
producingHTMLСоздает подключаемый модуль .html отчет
producingPDFСоздает подключаемый модуль .pdf отчет

Копирование семантики

Ручка. Сведения о том, как классы обработки влияют на операции копирования, см. в разделе Копирование объектов.

Примеры

свернуть все

Создайте тестовый пакет из двух тестовых файлов, запустите пакет и создайте .docx отчет о результатах.

Создание нового файла в рабочей папке с именем ScriptBasedTest.m содержащий следующий тестовый сценарий. Сценарий включает в себя два неуспешных и незавершенных теста.

%% Test double class
expSolution = 'double';
actSolution = ones;
assert(isa(actSolution,expSolution))

%% Test single class
expSolution = 'single';
actSolution = ones('single');
assert(isa(actSolution,expSolution))

%% Test uint16 class
expSolution = 'uint16';
actSolution = ones('uint16');
assert(isa(actSolution,expSolution))

%% Test that fails
assert(false==true);

%% Another test that fails
assert(strcmp('correlation','causation'))

Создание файла с именем ClassBasedTest.m содержит следующий класс теста.

classdef ClassBasedTest < matlab.unittest.TestCase
    properties (ClassSetupParameter)
        generator = {'twister','combRecursive','multFibonacci'};
    end
    properties (MethodSetupParameter)
        seed = {0,123,4294967295};
    end
    properties (TestParameter)
        dim1 = struct('small',1,'medium',2,'large',3);
        dim2 = struct('small',2,'medium',3,'large',4);
        dim3 = struct('small',3,'medium',4,'large',5);
        type = {'single','double'};
    end
    methods (TestClassSetup)
        function ClassSetup(testCase,generator)
            orig = rng;
            testCase.addTeardown(@rng,orig)
            rng(0, generator)
        end
    end
    methods (TestMethodSetup)
        function MethodSetup(testCase,seed)
            orig = rng;
            testCase.addTeardown(@rng,orig)
            rng(seed)
        end
    end
    methods (Test, ParameterCombination='sequential')
        function testSize(testCase,dim1,dim2,dim3)
            testCase.verifySize(rand(dim1,dim2,dim3),[dim1 dim2 dim3])
        end 
    end
    methods (Test, ParameterCombination='pairwise')
        function testRepeatable(testCase,dim1,dim2,dim3)
            state = rng;
            firstRun = rand(dim1,dim2,dim3);
            rng(state)
            secondRun = rand(dim1,dim2,dim3);
            testCase.verifyEqual(firstRun,secondRun);
        end
    end
    methods (Test)
        function testClass(testCase,dim1,dim2,type)
            testCase.verifyClass(rand(dim1,dim2,type),type)
        end
    end
end

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

import matlab.unittest.TestRunner;
import matlab.unittest.TestSuite;
import matlab.unittest.plugins.TestReportPlugin;

suite = testsuite({'ScriptBasedTest','ClassBasedTest'})
suite = 

  1×284 Test array with properties:

    Name
    ProcedureName
    TestClass
    BaseFolder
    Parameterization
    SharedTestFixtures
    Tags

Tests Include:
   17 Unique Parameterizations, 0 Shared Test Fixture Classes, 0 Tags.

Создайте тестовый питатель в автоматическом режиме, чтобы информация не выводилась в командное окно. Создать TestReportPlugin который отправляет выходные данные в файл MyTestReport.docx.

runner = TestRunner.withNoPlugins;
docxFile = 'MyTestReport.docx';
plugin = TestReportPlugin.producingDOCX(docxFile);

Добавьте подключаемый модуль в TestRunner и запустить люкс.

runner.addPlugin(plugin);
result = runner.run(suite)
Generating report. Please wait.
    Preparing content for the report.
    Adding content to the report.
    Writing report to file.
Report has been saved to: C:\work\MyTestReport.docx

result = 

  1×284 TestResult array with properties:

    Name
    Passed
    Failed
    Incomplete
    Duration
    Details

Totals:
   282 Passed, 2 Failed, 2 Incomplete.
   0.73477 seconds testing time.

Откройте отчет о тестировании.

open(docxFile)

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

Создание нового файла в рабочей папке с именем FunctionBasedTest.m содержащий следующий функциональный тест. Тестовый файл включает два неуспешных теста.

%% Main function to generate tests
function tests = FunctionBasedTest
tests = functiontests(localfunctions);
end

%% Test Functions
function passingTest(testCase)
actSolution = 13*3+7*5;
expSolution = 74;
verifyEqual(testCase,actSolution,expSolution)
end

function failingTest(testCase)
actSolution = single(1);
verifyTrue(testCase,actSolution)
end

function anotherPassingTest(testCase)
verifyClass(testCase,string('some text'),'string')
end

function anotherFailingTest(testCase)
verifyTrue(testCase,strcmp('42','everything'))
end

В командной строке создайте набор тестов из FunctionBasedTest.m. Создайте тестовый питатель, отображающий выходные данные в окне команд с помощью подключаемого модуля по умолчанию.

import matlab.unittest.TestRunner;
import matlab.unittest.TestSuite;
import matlab.unittest.plugins.TestReportPlugin;

suite = testsuite('FunctionBasedTest');
runner = TestRunner.withTextOutput;

Создать TestReportPlugin который отправляет выходные данные в файл MyTestReport2.pdf. Включить в отчет проходящую диагностику и вывод текста из окна команд.

pdfFile = 'MyTestReport2.pdf';
plugin = TestReportPlugin.producingPDF(pdfFile,...
    'IncludingPassingDiagnostics',true,'IncludingCommandWindowText',true);

Добавьте подключаемый модуль в TestRunner и запустить люкс.

runner.addPlugin(plugin);
result = runner.run(suite);
Running FunctionBasedTest
.
================================================================================
Verification failed in FunctionBasedTest/failingTest.

    ---------------------
    Framework Diagnostic:
    ---------------------
    verifyTrue failed.
    --> The value must be logical. It is of type "single".
    
    Actual single:
             1

    ------------------
    Stack Information:
    ------------------
    In C:\Work\FunctionBasedTest.m (failingTest) at 15
================================================================================
..
================================================================================
Verification failed in FunctionBasedTest/anotherFailingTest.

    ---------------------
    Framework Diagnostic:
    ---------------------
    verifyTrue failed.
    --> The value must evaluate to "true".
    
    Actual logical:
           0

    ------------------
    Stack Information:
    ------------------
    In C:\Work\FunctionBasedTest.m (anotherFailingTest) at 23
================================================================================
.
Done FunctionBasedTest
__________

Failure Summary:

     Name                                  Failed  Incomplete  Reason(s)
    ===================================================================================
     FunctionBasedTest/failingTest           X                 Failed by verification.
    -----------------------------------------------------------------------------------
     FunctionBasedTest/anotherFailingTest    X                 Failed by verification.
    
Generating report. Please wait.
    Preparing content for the report.
    Adding content to the report.
    Writing report to file.
Report has been saved to: C:\Work\MyTestReport2.pdf

Откройте отчет о тестировании.

open(pdfFile)

В файле в текущей рабочей папке создайте FigurePropTest класс тестирования. Если failingTest метод тестирования завершается неуспешно (это всегда происходит в этом примере), он использует FigureDiagnostic чтобы сохранить фигуру, чтобы ее можно было изучить позже.

classdef FigurePropTest < matlab.unittest.TestCase
    properties
        TestFigure
    end
    methods(TestMethodSetup)
        function createFigure(testCase)
            testCase.TestFigure = figure;
        end
    end
    methods(TestMethodTeardown)
        function closeFigure(testCase)
            close(testCase.TestFigure)
        end
    end
    methods(Test)
        function defaultCurrentPoint(testCase)
            cp = testCase.TestFigure.CurrentPoint;
            testCase.verifyEqual(cp,[0 0], ...
                'Default current point is incorrect')
        end
        function defaultCurrentObject(testCase)
            import matlab.unittest.constraints.IsEmpty
            co = testCase.TestFigure.CurrentObject;
            testCase.verifyThat(co,IsEmpty, ...
                'Default current object should be empty')
        end
        function failingTest(testCase)
            import matlab.unittest.diagnostics.FigureDiagnostic
            fig = testCase.TestFigure;
            ax = axes(fig);
            surf(ax,peaks)
            testCase.verifyEmpty(testCase.TestFigure.Children, ...
                FigureDiagnostic(testCase.TestFigure))
        end
    end
end

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

suite = testsuite('FigurePropTest');

Создайте бесшумный тестовый питатель, который записывает диагностику и создает отчет PDF.

import matlab.unittest.plugins.DiagnosticsRecordingPlugin
import matlab.unittest.plugins.TestReportPlugin
runner = matlab.unittest.TestRunner.withNoPlugins;
runner.addPlugin(DiagnosticsRecordingPlugin);
runner.addPlugin(TestReportPlugin.producingPDF('MyTestReport.pdf'));

Измените корневой каталог артефакта по умолчанию на текущую рабочую папку.

runner.ArtifactsRootFolder = pwd;

Запустите тесты. Третий тест не проходит.

results = runner.run(suite)
Generating report. Please wait.
    Preparing content for the report.
    Adding content to the report.
    Writing report to file.
Report has been saved to: C:\work\MyTestReport.pdf

results = 

  1×3 TestResult array with properties:

    Name
    Passed
    Failed
    Incomplete
    Duration
    Details

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

Просмотрите результаты диагностики для третьего теста. Тестовый фреймворк сохранил два артефакта, связанных с третьим тестом. По умолчанию a FigureDiagnostic объект сохраняет фигуру как файл PNG и файл фиг.

results(3).Details.DiagnosticRecord.TestDiagnosticResults
ans = 

  DiagnosticResult with properties:

         Artifacts: [1×2 matlab.unittest.diagnostics.FileArtifact]
    DiagnosticText: 'Figure saved to:↵--> C:\work\715b5416-5c52-4a53-bbec-837a5db57392\Figure_284d9501-2121-45a1-bf5c-18904ce11e8f.fig↵--> C:\work\715b5416-5c52-4a53-bbec-837a5db57392\Figure_284d9501-2121-45a1-bf5c-18904ce11e8f.png'

Отображение сохраненного местоположения первого артефакта.

results(3).Details.DiagnosticRecord.TestDiagnosticResults.Artifacts(1)
ans = 

  FileArtifact with properties:

        Name: "Figure_284d9501-2121-45a1-bf5c-18904ce11e8f.fig"
    Location: "C:\work\715b5416-5c52-4a53-bbec-837a5db57392"
    FullPath: "C:\work\715b5416-5c52-4a53-bbec-837a5db57392\Figure_284d9501-2121-45a1-bf5c-18904ce11e8f.fig"

Чтобы проверить изображение, связанное с неудачным тестом, откройте файл в расположении, показанном на FullPath поле. Кроме того, поскольку был создан отчет о тестировании PDF, изображение фиксируется в MyTestReport.pdf. Отчет о тестировании также содержит путь к артефактам.

Представлен в R2016b