exponenta event banner

matlab.unittest.diagnostics.FigureДиагностический класс

Пакет: matlab.unittest.diagnostics

Диагностика для сохранения указанного рисунка

Описание

Используйте FigureDiagnostic для создания диагностики, сохраняющей фигуру в файл. Файл сохраняется после того, как MATLAB ® завершит тестовый запуск, и поэтому доступен для проверки после тестирования.

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

FigureDiagnostic(fig) создает диагностику для сохранения указанной фигуры. Когда структура тестирования диагностирует FigureDiagnostic экземпляр, он сохраняет fig к файлу фиг. Каждый файл имеет уникальное имя, состоящее из префикса ('Figure_', по умолчанию), автоматически сгенерированный идентификатор и расширение файла. Пример имени файла: Figure_cf95fe7f-5a7c-4310-9c19-16c0c17a969f.png. Чтобы просмотреть расположение файла, откройте FileArtifact объект через TestResult экземпляр.

FigureDiagnostic(fig,Name,Value) создает диагностику с дополнительными параметрами, заданными одним или несколькими Name,Value аргументы пары. Можно указать несколько аргументов пары имя-значение в любом порядке как Name1,Value1,...,NameN,ValueN. Например, FigureDiagnostic(fig,'Prefix','LoggedFigure_','Formats','png') экономит fig только как PNG-файл и использует префикс 'LoggedFigure_' вместо 'Figure_'.

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

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

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

Аргументы пары «имя-значение»

Укажите дополнительные пары, разделенные запятыми Name,Value аргументы. Name является именем аргумента и Value - соответствующее значение. Name должен отображаться внутри кавычек. Можно указать несколько аргументов пары имен и значений в любом порядке как Name1,Value1,...,NameN,ValueN.

Пример: FigureDiagnostic(testFig,'Formats','fig')

Формат файла рисунка, указанный как ["fig" "png"], "fig", или "png". Можно указать эти значения как векторы символов, как {'fig','png'}, 'fig', или 'png'. Внутри объекта MATLAB сохраняет их в виде строк.

Префикс имени файла, указанный как текст. Если префикс не указан, по умолчанию используется префикс 'Figure_'. Укажите значение как вектор символа или скаляр строки. Внутри объекта MATLAB сохраняет его как векторы символов.

Пример: 'LoggedFigure_'

Пример: "TestFig-"

Свойства

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

Рисунок, чтобы сохранить, когда структура тестирования диагностирует FigureDiagnostic экземпляр, возвращенный как Figure объект. Figure свойство доступно только для чтения, и его значение  устанавливается во время построения.

Формат файла для сохраненной фигуры, возвращенный как ["fig" "png"], "fig", или "png". Formats свойство доступно только для чтения, и его значение  устанавливается во время построения.

Префикс имени файла, возвращаемый в виде символьного вектора. Префикс по умолчанию: 'Figure_'. Prefix свойство доступно только для чтения, и его значение  устанавливается во время построения.

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

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

Примеры

свернуть все

Создать TestCase для интерактивного использования.

import matlab.unittest.TestCase
testCase = TestCase.forInteractiveUse;

Создайте фигуру.

fig = figure;
ax = axes(fig);
surf(ax,peaks)

Использовать FigureDiagnostic для сохранения фигуры в качестве тестовой диагностики. Убедитесь, что фигура не имеет дочерних элементов. Эта квалификация завершается неуспешно, и MATLAB отображает диагностику теста.

import matlab.unittest.diagnostics.FigureDiagnostic
testCase.verifyEmpty(fig.Children,FigureDiagnostic(fig))
Interactive verification failed.

----------------
Test Diagnostic:
----------------
Figure saved to:
--> C:\work\Temp\Figure_0b3da19f-5248-442b-aebf-3fb6d707fd1b.fig
--> C:\work\Temp\Figure_0b3da19f-5248-442b-aebf-3fb6d707fd1b.png

---------------------
Framework Diagnostic:
---------------------
verifyEmpty failed.
--> The value must be empty.
--> The value has a size of [1  1].

Actual matlab.graphics.axis.Axes:
      Axes with properties:
    
                 XLim: [0 50]
                 YLim: [0 60]
               XScale: 'linear'
               YScale: 'linear'
        GridLineStyle: '-'
             Position: [0.130000000000000 0.110000000000000 0.775000000000000 0.815000000000000]
                Units: 'normalized'
    
      Use get to show all properties

Создать TestCase для интерактивного использования.

import matlab.unittest.TestCase
testCase = TestCase.forInteractiveUse;

Создайте фигуру.

fig = figure;
membrane(6)

Использовать FigureDiagnostic для регистрации фигуры в качестве тестовой диагностики. Сохраните файл только в формате PNG и используйте пользовательский префикс для имени файла.

import matlab.unittest.diagnostics.FigureDiagnostic
testCase.log(FigureDiagnostic(fig,'Formats',{'png'},'Prefix','LoggedFigure_'))
Interactive diagnostic logged.
Figure saved to:
--> C:\work\Temp\LoggedFigure_0a02faa1-3e14-4783-9954-b56caa6b326d.png

В файле в текущей рабочей папке создайте 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. Отчет о тестировании также содержит путь к артефактам.

Совет

  • Расположение сохраненного рисунка - это папка с именем, уникальным для тестового запуска в папке, содержащейся в ArtifactsRootFolder. Если вы выполняете тест без TestRunner, например, с matlab.unittest.TestCase.forInteractiveUse, корневая папка - это значение, возвращенное tempdir().

  • Чтобы определить путь к сохраненной фигуре, откройте FileArtifact объект для определенного результата теста. Например, предположим, что res является TestResult массив. Определите местоположение сохраненной фигуры для первого элемента массива следующим образом.

    res(1).Details.DiagnosticRecord.TestDiagnosticResults.Artifacts
    ans = 
    
      FileArtifact with properties:
    
            Name: "Figure_3984704d-b884-44c2-b3ee-7ed10d36e967.png"
        Location: "C:\mywork\Temp\a1f80242-8f8a-4678-9124-415980432d08"
        FullPath: "C:\mywork\Temp\a1f80242-8f8a-4678-9124-415980432d08\Figure_3984704d-b884-44c2-b3ee-7ed10d36e967.png"
Представлен в R2017a