exponenta event banner

matlab.unittest.plugins.Class класс ValidationPlugin

Пакет: matlab.unittest.plugins

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

Описание

DiagnosticsValidationPlugin создает подключаемый модуль для проверки диагностического кода.

Добавить DiagnosticsValidationPlugin в TestRunner для подтверждения правильности выполнения диагностики, предоставляемой пользователем. Этот плагин полезен, потому что обычно тесты не сталкиваются с условиями отказа. Сбой может привести к непроизведенному диагностическому коду. Если в этом диагностическом коде имеется ошибка программирования, она не будет очевидна до тех пор, пока тест не завершится неуспешно. Однако на данном этапе процесса тестирования диагностика состояния отказа теряется из-за ошибки в диагностическом коде.

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

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

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

matlab.unittest.plugins.DiagnosticsValidationPlugin создает подключаемый модуль для проверки диагностического кода.

matlab.unittest.plugins.DiagnosticsValidationPlugin(stream) перенаправляет весь текст, выводимый в выходной поток, stream. Если выходной поток не указан, плагин использует значение по умолчанию ToStandardOutput поток.

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

stream

Расположение, в котором плагин направляет вывод текста, указанное как OutputStream.

По умолчанию: ToStandardOutput

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

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

Примеры

свернуть все

В рабочей папке создайте файл, ExampleTest.m, содержащий следующий класс теста. В этом примере testThree способ имеет преднамеренную ошибку. Метод должен использовать дескриптор функции для dir функция как FunctionHandleDiagnostic, но dir имеет неверное написание.

classdef ExampleTest < matlab.unittest.TestCase
    methods(Test)
        function testOne(testCase)
            % test code
        end
        function testTwo(testCase)
            % test code
        end
        function testThree(testCase)
            % The following should use @dir as a function handle,
            % but there is a typo
            testCase.verifyEqual('myfile','myfile', @dri)
        end
    end
end

Все тесты в ExampleTest.m в результате возникает состояние прохождения, но при диагностике возникает ошибка.

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

import matlab.unittest.TestRunner
import matlab.unittest.TestSuite
import matlab.unittest.plugins.DiagnosticsValidationPlugin

suite = TestSuite.fromClass(?ExampleTest);

Создайте тестовый питатель, настроенный с выводом текста.

runner = TestRunner.withTextOutput;

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

result1 = runner.run(suite);
Running ExampleTest
...
Done ExampleTest
__________

Диагностические выходные данные не отображаются, так как все тесты пройдены. Платформа тестирования не сталкивается с ошибкой в FunctionHandleDiagnostic из testThree.

Добавить DiagnosticValidationPlugin к питателю и запустите тесты.

runner.addPlugin(DiagnosticsValidationPlugin)
result2 = runner.run(suite);
Running ExampleTest
..
------------------------------
Validation of Test Diagnostic:
------------------------------
Error occurred while capturing diagnostics:
Error using evalc
Undefined function or variable 'dri'.

Error in ExampleTest/testThree (line 12)
            testCase.verifyEqual('myfile','myfile', @dri);

.
Done ExampleTest
__________

Платформа выполняет диагностику, предоставляемую FunctionHandleDiagnostic, даже несмотря на то, что ни один из тестов не потерпел неудачу. Без этого плагина тестовый фреймворк сталкивается с ошибкой только в случае неуспешного завершения теста.