Main Content

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

verifyNotSameHandle

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

验证两个句柄数组是否不同

说明

示例

verifyNotSameHandle(testCase,actual,prohibited) 验证 actual 与禁止的句柄数组不同。如果两个句柄数组具有相同的大小,并且它们对应的元素引用相同的句柄对象,则它们相同。

示例

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

输入参数

全部展开

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

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

要用于比较的值,指定为句柄数组。

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

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

示例: "My Custom Diagnostic"

示例: @dir

属性

Sealedtrue

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

示例

全部展开

测试 actual 值是否与指定的句柄数组不同。

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

classdef ExampleHandle < handle
    properties
        Number = 1;
    end
end

创建两个 ExampleHandle 对象,将它们分别赋给变量 h1h2。然后,将 h2 的值赋给另一个变量 h3。变量 h1h2 指向不同对象,但变量 h2h3 指向相同的对象。

h1 = ExampleHandle;
h2 = ExampleHandle;
h3 = h2;

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

testCase = matlab.unittest.TestCase.forInteractiveUse;

验证 h1h2 是否指向不同对象。

verifyNotSameHandle(testCase,h1,h2)
Verification passed.

测试 h2h3 是否指向不同对象。测试失败。

verifyNotSameHandle(testCase,h2,h3, ...
    "Values must point to different objects.")
Verification failed.
    ----------------
    Test Diagnostic:
    ----------------
    Values must point to different objects.
    ---------------------
    Framework Diagnostic:
    ---------------------
    verifyNotSameHandle failed.
    --> The two handles must not refer to the same handle, or should have different sizes.
    
    Actual Value:
      ExampleHandle with properties:
    
        Number: 1
    Prohibited Handle Object:
      ExampleHandle with properties:
    
        Number: 1
    ------------------
    Stack Information:
    ------------------
    In C:\work\TestHandlesForInequalityExample.m (TestHandlesForInequalityExample) at 33

验证 [h1 h2][h2 h1] 不同。测试通过,因为对应的向量元素指向不同对象。

verifyNotSameHandle(testCase,[h1 h2],[h2 h1])
Verification passed.

测试 [h2 h3] 是否与 [h3 h2] 不同。测试失败,因为对应的向量元素指向同一个对象。

verifyNotSameHandle(testCase,[h2 h3],[h3 h2])
Verification failed.
    ---------------------
    Framework Diagnostic:
    ---------------------
    verifyNotSameHandle failed.
    --> The two handles must not refer to the same handle, or should have different sizes.
    
    Actual Value:
      1×2 ExampleHandle array with properties:
    
        Number
    Prohibited Handle Object:
      1×2 ExampleHandle array with properties:
    
        Number
    ------------------
    Stack Information:
    ------------------
    In C:\work\TestHandlesForInequalityExample.m (TestHandlesForInequalityExample) at 44

验证两个不同形状的句柄数组是否不同。

verifyNotSameHandle(testCase,[h1 h1 h2 h3],[h1 h1; h2 h3])
Verification passed.

提示

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

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

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

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

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

版本历史记录

在 R2013a 中推出