This example shows how to create a basic custom fixture that changes the display format to hexadecimal representation. The example also shows how to use the fixture to test a function that displays a column of numbers as text. After the testing completes, the framework restores the display format to its pretest state.
In a file in your working folder, create a new class,
FormatHexFixture
that inherits from the
matlab.unittest.fixtures.Fixture
class. Since we want the
fixture to restore the pretest state of the MATLAB® display format, create an OriginalFormat
property to keep track of the original display format.
classdef FormatHexFixture < matlab.unittest.fixtures.Fixture properties (Access = private) OriginalFormat end end
Subclasses of the Fixture
class must implement the
setup
method. Use this method to record the pretest
display format, and set the format to 'hex'
. Use the
teardown
method to restore the original display format.
Define the setup
and teardown
methods in
the methods
block of the FormatHexFixture
class.
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
In a file in your working folder, create the following test class,
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
This test applies the custom fixture and verifies that the displayed column of hexadecimal representation is as expected.
At the command prompt, run the test.
run(SampleTest);
Running SampleTest . Done SampleTest __________
matlab.unittest.fixtures.Fixture