Main Content

本页翻译不是最新的。点击此处可查看最新英文版本。

matlab.unittest.constraints.Constraint 类

命名空间: matlab.unittest.constraints

约束的基础接口

描述

matlab.unittest.constraints.Constraint 类提供接口,您可以使用该接口在鉴定中编写比较逻辑中并产生诊断信息。所有约束均是从 Constraint 类派生的,无论它们是用户提供的约束还是框架约束。

要创建自定义约束类,请从 matlab.unittest.constraints.Constraint 派生您的类,并实现其抽象方法:

  • 实现 satisfiedBy 方法以编写比较逻辑。

  • 实现 getDiagnosticFor 方法,用于在测试框架根据约束评估实际值时产生诊断信息。

然后,您可以将 Constraint 子类与 matlab.unittest.qualifications 包中的 assertThatassumeThatfatalAssertThatverifyThat 鉴定方法结合使用。

要创建可以使用 and (&)、or (|) 和 not (~) 运算符组合和求反的约束,请改为从 matlab.unittest.constraints.BooleanConstraint 派生您的类。

类属性

Abstract
true
HandleCompatible
true

有关类属性的信息,请参阅类属性

方法

全部展开

示例

全部折叠

创建一个约束,该约束确定一个值的大小是否与预期值的大小相同。

在当前文件夹下的一个文件中,创建一个名为 IsSameSizeAs 的类,该类派生自 matlab.unittest.constraints.Constraint,并实现 satisfiedBygetDiagnosticFor 方法。

classdef IsSameSizeAs < matlab.unittest.constraints.Constraint
    properties (SetAccess=immutable)
        ValueWithExpectedSize
    end

    methods
        % Class constructor
        function constraint = IsSameSizeAs(value)
            constraint.ValueWithExpectedSize = value;
        end

        % Determine if the actual value satisfies the constraint 
        function tf = satisfiedBy(constraint,actual)
            tf = constraint.sizeMatchesExpected(actual);
        end

        % Produce a diagnostic for the constraint
        function diagnostic = getDiagnosticFor(constraint,actual)
            import matlab.automation.diagnostics.StringDiagnostic
            if constraint.sizeMatchesExpected(actual)
                diagnostic = StringDiagnostic("IsSameSizeAs passed.");
            else
                diagnostic = StringDiagnostic( ...
                    "IsSameSizeAs failed." + newline + "Actual Size: [" ...
                    + int2str(size(actual)) + "]" + newline ...
                    + "Expected Size: [" ...
                    + int2str(size(constraint.ValueWithExpectedSize)) ...
                    + "]");
            end
        end
    end

    methods (Access=private)
        % Determine if the actual and expected values are the same size
        function tf = sizeMatchesExpected(constraint,actual)
            tf = isequal(size(actual), ...
                size(constraint.ValueWithExpectedSize));
        end
    end
end

创建一个供交互测试的测试用例。

testCase = matlab.unittest.TestCase.forInteractiveUse;

通过使用 IsSameSizeAs 约束,验证一个 5×5 零点矩阵与一个 5×5 全 1 矩阵大小相同。

testCase.verifyThat(zeros(5),IsSameSizeAs(ones(5)))
Verification passed.

版本历史记录

在 R2013a 中推出