verifyClass

Класс: matlab.unittest.qualifications.
Пакет: matlab.unittest.qualifications

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

Синтаксис

verifyClass(verifiable,actual,className)
verifyClass(verifiable,actual,metaClass)
verifyClass(___,diagnostic)

Описание

verifyClass(verifiable,actual,className) проверяет, что actual является значением MATLAB®, класс которого является классом, заданным className.

verifyClass(verifiable,actual,metaClass) проверяет, что actual является значением MATLAB, класс которого является классом, заданным экземпляром meta.class metaClass. Экземпляр должен быть точным соответствием класса. Используйте verifyInstanceOf, чтобы проверить включение в иерархию классов.

verifyClass(___,diagnostic) также отображает диагностическую информацию в diagnostic после отказа.

Входные параметры

verifiable

"Образец matlab.unittest.TestCase, который используется для прохождения или непрохождения проверки типа ""verification"" в сочетании с тестовой средой.".

actual

Значение для проверки.

className

Имя класса, заданного как вектор символов.

metaClass

Экземпляр meta.class.

diagnostic

Диагностическая информация, относящаяся к проверке, указывается как одно из следующего:

  • stringArray

  • массив символов

  • указатель на функцию

  • объект matlab.unittest.diagnostics.Diagnostic

Значения диагностики могут быть нескалярными. Для получения дополнительной информации см. Matlab.unittest.diagnostics.Diagnostic.

Примеры

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

Эти интерактивные тесты проверяют класс номера, 5.

Создайте объект TestCase и Значение для проверки.

testCase = matlab.unittest.TestCase.forInteractiveUse;
actvalue = 5;

Проверьте, что класс actvalue является двойным.

verifyClass(testCase, actvalue, 'double');
Interactive verification passed.

Проверьте, что класс actvalue является char.

verifyClass(testCase, actvalue, 'char');
Interactive verification failed.

---------------------
Framework Diagnostic:
---------------------
verifyClass failed.
--> The value's class is incorrect.
    
    Actual Class:
        double
    Expected Class:
        char

Actual double:
         5

Протестируйте сбои.

Эти интерактивные тесты проверяют указатели на функцию, заданные как meta.class экземпляр, ?function_handle.

Создайте объект TestCase.

testCase = matlab.unittest.TestCase.forInteractiveUse;

Создайте указатель на функцию.

fh = @sin;
verifyClass(testCase, fh, ?function_handle);
Interactive verification passed.

Протестируйте имя функции.

fh = 'sin';
verifyClass(testCase, fh, ?function_handle);
Interactive verification failed.

---------------------
Framework Diagnostic:
---------------------
verifyClass failed.
--> The value's class is incorrect.
    
    Actual Class:
        char
    Expected Class:
        function_handle

Actual char:
    sin

Протестируйте сбои.

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

Создайте класс, BaseExample.

classdef BaseExample
end

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

classdef DerivedExample < BaseExample
end

Проверьте, что классы не равны.

testCase = matlab.unittest.TestCase.forInteractiveUse;
verifyClass(testCase, DerivedExample(), ?BaseExample);
Interactive verification failed.

---------------------
Framework Diagnostic:
---------------------
verifyClass failed.
--> The value's class is incorrect.
    
    Actual Class:
        DerivedExample
    Expected Class:
        BaseExample

Actual DerivedExample:
      DerivedExample with no properties.

Протестируйте сбои.

Использование verifyClass, чтобы протестировать функцию add5 возвращает значение double.

Функция для модульного тестирования:

type add5.m
function res = add5(x)
% ADD5 Increment input by 5.
if ~isa(x,'numeric')
    error('add5:InputMustBeNumeric','Input must be numeric.')
end
res = x + 5;
end

Класс TestCase, содержащий методы тестирования:

type Add5Test.m
classdef Add5Test < matlab.unittest.TestCase
    methods (Test)
        function testDoubleOut(testCase)
            actOutput = add5(1);
            testCase.verifyClass(actOutput,'double')
        end
        function testNonNumericInput(testCase)
            testCase.verifyError(@()add5('0'),'add5:InputMustBeNumeric')
        end
    end
end

Создайте тестовый набор из файла класса Add5Test.

suite = matlab.unittest.TestSuite.fromFile('Add5Test.m')
suite = 
  1x2 Test array with properties:

    Name
    ProcedureName
    TestClass
    BaseFolder
    Parameterization
    SharedTestFixtures
    Tags

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

Запущение тестов.

result = run(suite);
Running Add5Test
..
Done Add5Test
__________

Советы

  • Метод функционально эквивалентен следующим методам:

    import matlab.unittest.constraints.IsOfClass;
    verifiable.verifyThat(actual, IsOfClass(className));
    verifiable.verifyThat(actual, IsOfClass(metaClass));
    

    Там существует больше функциональности при использовании ограничения IsOfClass непосредственно через verifyThat.

  • Используйте проверку типа "verification" для создания и записи сбоев без выдачи исключения. Поскольку проверки не выдают исключения, все тесты выполняются до своего завершения, даже когда имеют место сбои в проверке. Как правило, проверки типа "verification" являются основой для модульного теста, поскольку они обычно не требуют раннего выхода из тестирования. Используйте другие типы проверки для выявления нарушений предварительных обязательных условий или неправильной настройки теста. В качестве варианта,

    • Используйте проверку типа "assumption", чтобы убедиться, что тестовая среда соответствует предварительным обязательным условиям, которые не приводят к ошибке тестирования. Нарушение условий приводит к фильтрации тестов, а среда тестирования помечает тесты как незавершенные. Для получения дополнительной информации см. matlab.unittest.qualifications. Assumable.

    • Используйте проверку типа "assertion", когда состояние отказа делает недействительным оставшуюся часть текущего теста, но не препятствует правильному выполнению последующих видов тестирования. Сбой в точке утверждения показывает, что текущий метод тестирования является неудачным и неполным. Для получения дополнительной информации см. matlab.unittest.qualifications. Assertable.

    • Используйте проверку типа "fatal assertion", чтобы прервать сеанс тестирования после сбоя. Эти типы проверки применяются, когда характер отказа настолько принципиален, что нет смысла продолжать тестирование. Эти проверки также полезны, когда отключение фиксатора не восстанавливает MATLAB, правильно указывают и желательно прерывать тестирование и запускать новую сессию. Для получения дополнительной информации см. matlab.unittest.qualifications. FatalAssertable.

Введенный в R2013a