Main Content

本页的翻译已过时。点击此处可查看最新英文版本。

matlab.unittest.diagnostics.Diagnostic 类

包: matlab.unittest.diagnostics

matlab.unittest 诊断的基础接口类

说明

Diagnostic 接口类是 matlab.unittest 框架及其客户端用来打包诊断信息的方法。所有诊断都派生自 Diagnostic,无论它们是用户提供的用于单个比较的测试诊断,还是与比较中使用的 Constraint 相关联的诊断,都是如此。

派生自 Diagnostic 的类会对要执行的诊断操作进行编码。它们会生成诊断结果,并通过测试运行框架来恰当地显示这一结果。作为满足此要求的条件,任何 Diagnostic 实现都可以与 matlab.unittest 验证一起使用。这些验证会执行诊断操作并存储结果,以供测试运行框架使用。

为方便起见,对于用户提供的测试诊断,该框架会为字符向量数组、字符串和函数句柄创建适当的诊断实例。为保持良好性能,只有在出现验证错误时,或测试运行框架明确观察到通过的验证时,这些值才会转换为 Diagnostic 实例。默认的测试运行程序不能明确观察到通过的验证。

属性

Artifacts

上一次诊断评估期间生成的项目,以项目数组形式返回。

DiagnosticText

DiagnosticText 属性为诊断的使用方(例如测试框架)提供了一种传达实际诊断消息的方法。该属性是一个字符向量,在计算 diagnose 方法期间定义。

方法

diagnose执行诊断操作
join将多个诊断联接为一个数组

复制语义

句柄。要了解句柄类如何影响复制操作,请参阅复制对象

示例

全部折叠

import matlab.unittest.constraints.IsEqualTo

% Create a TestCase for interactive use
testCase = matlab.unittest.TestCase.forInteractiveUse;

% Create StringDiagnostic upon failure
testCase.verifyThat(1, IsEqualTo(2), 'User supplied Diagnostic')

% Create FunctionHandleDiagnostic upon failure
testCase.verifyThat(1, IsEqualTo(2), @() system('ps'))

% Usage of user defined Diagnostic upon failure (see definition below)
testCase.verifyThat(1, IsEqualTo(2), ProcessStatusDiagnostic...
    ('Could not close my third party application!'))

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% Diagnostic definition
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
classdef ProcessStatusDiagnostic < matlab.unittest.diagnostics.Diagnostic
    % ProcessStatusDiagnostic - an example diagnostic
    %
    %   Simple example to demonstrate how to create a custom
    %   diagnostic.
    
    properties
        
        % HeaderText - user-supplied header to display
        HeaderText = '(No header supplied)';
    end
    
    methods
        function diag = ProcessStatusDiagnostic(header)
            % Constructor - construct a ProcessStatusDiagnostic
            %
            %   The ProcessStatusDiagnostic constructor takes an
            %   optional header to be displayed along with process
            %   information.
            if (nargin >0)
                diag.HeaderText = header;
            end
        end
        
        function diagnose(diag)
            
            [status, processInfo] = system('ps');
            if (status ~= 0)
                processInfo = sprintf(...
                    ['!!! Could not obtain status diagnostic information!!!'...
                    ' [exit status code: %d]\n%s'], status, processInfo);
            end
            diag.DiagnosticText = sprintf('%s\n%s', diag.HeaderText,...
                processInfo);
        end
    end
    
end % classdef