matlab.unittest.plugins.TestReportPlugin class

Пакет: matlab.unittest.plugins

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

Описание

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

Конструкция

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

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

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

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

Свойства

расширить все

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

Индикатор, если включены выводы текста из Командного окна, задается как false или true (logical 0 или 1). По умолчанию IncludeCommandWindowText является false и вывод текста из Командного окна исключается из отчета. Чтобы включить текст Command Window в отчет, задайте 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 отчет

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

Указатель. Чтобы узнать, как классы handle влияют на операции копирования, см. раздел «Копирование объектов».

Примеры

свернуть все

Создайте тестовый набор из двух тестовых файлов, запустите набор и сгенерируйте .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- файла, так и FIG- файл.

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