Main Content

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

verifyInstanceOf

类: matlab.unittest.qualifications.Verifiable
包: matlab.unittest.qualifications

验证值是指定类的实例

说明

示例

verifyInstanceOf(testCase,actual,class) 验证 actual 是指定类的实例。

此方法验证类层次结构中的包含内容。要通过该测试,指定的类必须为 actual 类或其超类。要验证完全匹配的类,请使用 verifyClass

示例

verifyInstanceOf(testCase,actual,class,diagnostic) 还将 diagnostic 中的诊断信息与验证相关联。

输入参数

全部展开

测试用例对象,指定为 matlab.unittest.qualifications.Verifiable 类的实例。由于 matlab.unittest.TestCase 类会子类化 matlab.unittest.qualifications.Verifiable 并继承其方法,因此 testCase 通常是 matlab.unittest.TestCase 实例。

要测试的值,指定为任何数据类型的值。

预期的类,指定为字符串标量、字符向量或 meta.class 实例。

示例: "MyClass"

示例: ?MyClass

当验证通过或失败时显示的诊断信息,指定为字符串数组、字符数组、函数句柄或 matlab.unittest.diagnostics.Diagnostic 对象数组。

根据测试运行程序的配置,测试框架可能会在验证通过或失败时显示诊断信息。默认情况下,框架仅在验证失败时显示诊断信息。您可以通过自定义测试运行程序来覆盖默认行为。例如,使用 DiagnosticsOutputPlugin 实例来显示失败和通过事件诊断信息。

示例: "My Custom Diagnostic"

示例: @dir

属性

Sealedtrue

要了解方法的属性,请参阅方法属性

示例

全部展开

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

testCase = matlab.unittest.TestCase.forInteractiveUse;

验证数值是 double 类的实例。

verifyInstanceOf(testCase,1,"double")
Verification passed.

测试该值是否是 logical 类的实例。测试失败。

verifyInstanceOf(testCase,1,"logical", ...
    "Value must be an instance of the class logical.")
Verification failed.
    ----------------
    Test Diagnostic:
    ----------------
    Value must be an instance of the class logical.
    ---------------------
    Framework Diagnostic:
    ---------------------
    verifyInstanceOf failed.
    --> The value must be an instance of the expected type.
        
        Actual Class:
            double
        Expected Type:
            logical
    
    Actual Value:
         1
    ------------------
    Stack Information:
    ------------------
    In C:\work\TestANumericValueExample.m (TestANumericValueExample) at 17

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

testCase = matlab.unittest.TestCase.forInteractiveUse;

验证 @sin 是否为函数句柄。

verifyInstanceOf(testCase,@sin,"function_handle")
Verification passed.

使用 meta.class 实例而不是字符串重复该测试。

verifyInstanceOf(testCase,@sin,?function_handle)
Verification passed.

使用 verifyInstanceOf 测试类层次结构中的包含内容。

在当前文件夹下的文件中,创建 ExampleHandle 句柄类。

classdef ExampleHandle < handle
    properties
        Number = 1;
    end
end

创建一个已定义类的实例。

actual = ExampleHandle;

为交互式测试创建一个测试用例,然后验证 actualExampleHandle 类的实例。

testCase = matlab.unittest.TestCase.forInteractiveUse;
verifyInstanceOf(testCase,actual,?ExampleHandle)
Verification passed.

测试 actual 是否为 handle 类的实例。测试通过,因为 ExampleHandle 是从 handle 类派生的。

verifyInstanceOf(testCase,actual,?handle)
Verification passed.

提示

  • verifyInstanceOf 方法非常方便。例如,verifyInstanceOf(testCase,actual,class) 在功能上等效于以下代码。

    import matlab.unittest.constraints.IsInstanceOf
    testCase.verifyThat(actual,IsInstanceOf(class))
    
  • 使用此确认在不引发异常的条件下生成和记录失败。由于确认不会引发异常,因此即使出现确认失败的情形,依然会完成所有的测试内容。通常,确认指的是对单元测试的主要验证,因为这些确认一般不要求提前从测试中退出。使用其他验证类型来测试是否违反先决条件或测试安装是否正确:

    • 使用断言验证确保测试环境满足无论如何都不会导致测试失败的先决条件。假设失败会生成已筛选的测试,且测试框架会将测试设为 Incomplete。有关详细信息,请参阅 matlab.unittest.qualifications.Assumable

    • 当失败条件导致当前测试内容的剩余部分都失效,但不会阻止后续测试正确执行时,使用断言验证。断言点处的失败会将当前测试展现为 FailedIncomplete。有关详细信息,请参阅 matlab.unittest.qualifications.Assertable

    • 使用致命断言验证在失败时中止测试会话。当失败涉及根本以致继续测试已经没有意义时,这些验证非常有用。当脚手架拆解不能正确还原环境状态,适合中止测试并启动一个新会话时,致命断言也很有用。有关详细信息,请参阅 matlab.unittest.qualifications.FatalAssertable

版本历史记录

在 R2013a 中推出