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

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

Создание определения класса FormatHexFixture

В файле в вашей рабочей папке создайте новый класс, FormatHexFixture это наследовалось matlab.unittest.fixtures.Fixture класс. Поскольку мы хотим, чтобы фиксатор восстановил предварительное состояние MATLAB® формат отображения, создайте OriginalFormat свойство отслеживать исходный формат отображения.

classdef FormatHexFixture < matlab.unittest.fixtures.Fixture
    properties (Access = private)
        OriginalFormat
    end
end

Реализация методов отключения и Setup

Подклассы Fixture класс должен реализовать setup метод. Используйте этот метод, чтобы записать предварительный формат отображения и установить формат на 'hex'. Используйте teardown метод, чтобы восстановить исходный формат отображения. Задайте setup и teardown методы в methods блок FormatHexFixture класс.

classdef FormatHexFixture < matlab.unittest.fixtures.Fixture
    properties (Access = private)
        OriginalFormat
    end
    methods
        function setup(fixture)
            fixture.OriginalFormat = get(0,'Format');
            set(0,'Format','hex')
        end
        function teardown(fixture)
            set(0,'Format',fixture.OriginalFormat)
        end
    end
end

Применение пользовательского прибора

В файле в вашей рабочей папке создайте следующий тестовый класс, SampleTest.m.

classdef SampleTest < matlab.unittest.TestCase
    methods (Test)
        function test1(testCase)
            testCase.applyFixture(FormatHexFixture)
            actStr = getColumnForDisplay([1;2;3],'Small Integers');
            expStr = ['Small Integers  '
                '3ff0000000000000'
                '4000000000000000'
                '4008000000000000'];
            testCase.verifyEqual(actStr,expStr)
        end
    end
end

function str = getColumnForDisplay(values,title)
elements = cell(numel(values)+1,1);
elements{1} = title;
for idx = 1:numel(values)
    elements{idx+1} = displayNumber(values(idx));
end
str = char(elements);
end

function str = displayNumber(n)
str = strtrim(evalc('disp(n);'));
end

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

В командной строке, запущенной тест.

run(SampleTest);
Running SampleTest
.
Done SampleTest
__________

Смотрите также

Похожие темы