Main Content

getDiagnosticFor

类: matlab.unittest.constraints.Constraint
包: matlab.unittest.constraints

为比较的值生成诊断信息

说明

示例

diag = getDiagnosticFor(constObj,actVal) 为约束 constObj 和值 actVal 生成 Diagnostic 对象 diag。创建自定义约束时,您必须实现 getDiagnosticFor 方法来根据约束 constObj 分析值 actVal,并返回 matlab.unittest.diagnostics.Diagnostic 对象。

通常,当遇到验证失败时,测试框架将调用此方法。因此,与 satisfiedBy 方法相比,验证失败后调用 getDiagnosticFor 方法能够更高效地提供更详细的分析信息。

输入参数

constObj

Constraint 实例

actVal

要比较的值

示例

全部展开

创建一个自定义约束,该约束确定给定值的大小是否与预期值的大小相同。实现 getDiagnosticFor 方法,以针对约束计算实际值并提供一个 Diagnostic 对象。

classdef HasSameSizeAs < matlab.unittest.constraints.Constraint
    
    properties(SetAccess = immutable)
        ValueWithExpectedSize
    end
    
    methods
        % Class constructor
        function constraint = HasSameSizeAs(value)
            constraint.ValueWithExpectedSize = value;
        end
        
        % Determine if the actual value satisfies the constraint
        function bool = satisfiedBy(constraint,actual)
            bool = constraint.sizeMatchesExpected(actual);
        end
        
        % Produce a diagnostic for the constraint
        function diag = getDiagnosticFor(constraint,actual)
            import matlab.unittest.diagnostics.StringDiagnostic
            if constraint.sizeMatchesExpected(actual)
                diag = StringDiagnostic('HasSameSizeAs passed.');
            else
                diag = StringDiagnostic(sprintf(...
                    'HasSameSizeAs failed.\nActual Size: [%s]\nExpectedSize: [%s]',...
                    int2str(size(actual)),...
                    int2str(size(constraint.ValueWithExpectedSize))));
            end
        end
    end
    
    methods(Access = private)
        % Determine if the actual and expected values have the same size
        function bool = sizeMatchesExpected(constraint,actual)
            bool = isequal(size(actual),size(constraint.ValueWithExpectedSize));
        end
    end
    
end