Main Content

创建基本自定义脚手架

此示例演示如何创建基本自定义脚手架,以便将显示格式更改为十六进制表示。此示例还演示如何使用该脚手架测试一个将一列数字显示为文本的函数。测试完成后,该框架将显示格式恢复为其预测试状态。

创建 FormatHexFixture 类定义

在您的工作文件夹下的文件中,创建一个从 matlab.unittest.fixtures.Fixture 类继承的新类 FormatHexFixture。因为我们希望该脚手架恢复 MATLAB® 显示格式的预测试状态,所以创建一个 OriginalFormat 属性来跟踪原始显示格式。

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

实现设置和拆解方法

Fixture 类的子类必须实现 setup 方法。使用此方法记录预测试显示格式,并将该格式设置为 'hex'。使用 teardown 方法恢复原始显示格式。在 FormatHexFixture 类的 methods 代码块中定义 setupteardown 方法。

classdef FormatHexFixture < matlab.unittest.fixtures.Fixture
    properties (Access = private)
        OriginalFormat
    end
    methods
        function setup(fixture)
            fixture.OriginalFormat = format;
            format hex
        end
        function teardown(fixture)
            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
__________

另请参阅

相关主题