matlab.unittest.diagnostics.FigureDiagnostic class

Пакет: matlab.unittest.diagnostics

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

Описание

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

Конструкция

FigureDiagnostic(fig) создает диагностику для сохранения указанного рисунка. Когда среда тестирования диагностирует FigureDiagnostic образец, он сохраняет fig в файл на FIG и в файл PNG. Каждый файл имеет уникальное имя, состоящее из префикса ('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 объект. The Figure свойство доступно только для чтения, и его значение  устанавливается во время конструкции.

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

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

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

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

Примеры

свернуть все

Создайте 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- файла, так и 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. Отчет о тесте также содержит путь к программным продуктам.

Совет

  • Расположение сохранённого рисунка является папкой с именем, уникальным для тестового запуска в папке, содержащейся в 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