В этом примере показано, как создать основной пользовательский прибор, который изменяет формат отображения в шестнадцатеричное представление. Пример также показывает, как использовать фиксатор, чтобы протестировать функцию, которая отображает столбец чисел как текст. После того, как тестирование завершается, среда восстанавливает формат отображения к своему предварительному состоянию.
В файле в вашей рабочей папке создайте новый класс, FormatHexFixture
это наследовалось matlab.unittest.fixtures.Fixture
класс. Поскольку мы хотим, чтобы фиксатор восстановил предварительное состояние формата отображения MATLAB®, создайте OriginalFormat
свойство отслеживать исходный формат отображения.
classdef FormatHexFixture < matlab.unittest.fixtures.Fixture properties (Access = private) OriginalFormat end end
Подклассы 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 __________
matlab.unittest.fixtures.Fixture