matlab.unittest.constraints.IsSameHandleAs 类
命名空间: matlab.unittest.constraints
超类: matlab.unittest.constraints.BooleanConstraint
测试两个句柄数组是否相同
描述
matlab.unittest.constraints.IsSameHandleAs
类提供一个约束来测试句柄数组是否与另一个句柄数组相同。如果两个句柄数组具有相同的大小并且它们对应的元素指向相同的句柄对象,则它们相同。
创建对象
描述
c = matlab.unittest.constraints.IsSameHandleAs(expectedHandle)
创建一个约束来测试句柄数组是否与预期的句柄数组相同并设置 ExpectedHandle
属性。如果句柄数组和 expectedHandle
大小相同并且它们对应的元素指向相同的句柄对象,则满足该约束。
属性
ExpectedHandle
— 预期值
句柄数组
预期值,以句柄数组形式返回。在创建约束的过程中指定此属性的值。
属性:
GetAccess | public |
SetAccess | private |
示例
测试句柄的相等性
使用 IsSameHandleAs
约束比较句柄数组。
在当前文件夹下的文件中,创建 ExampleHandle
句柄类。
classdef ExampleHandle < handle properties Number = 1; end end
导入此示例中使用的类。
import matlab.unittest.TestCase import matlab.unittest.constraints.IsSameHandleAs
创建一个供交互测试的测试用例。
testCase = TestCase.forInteractiveUse;
创建两个 ExampleHandle
对象,将它们分别赋给变量 h1
和 h2
。然后,将 h2
的值赋给另一个变量 h3
。变量 h1
和 h2
指向不同对象,但变量 h2
和 h3
指向相同的对象。
h1 = ExampleHandle; h2 = ExampleHandle; h3 = h2;
测试 h1
和 h2
是否指向同一个对象。测试失败。
testCase.verifyThat(h1,IsSameHandleAs(h2))
Verification failed. --------------------- Framework Diagnostic: --------------------- IsSameHandleAs failed. --> Values do not refer to the same handle. Actual Value: ExampleHandle with properties: Number: 1 Expected Handle Object: ExampleHandle with properties: Number: 1
验证 h2
和 h3
指向同一个对象。
testCase.verifyThat(h2,IsSameHandleAs(h3))
Verification passed.
测试 [h2 h3]
和 [h3 h2]
是否相同。测试通过,因为对应的向量元素指向同一个对象。
testCase.verifyThat([h2 h3],IsSameHandleAs([h3 h2]))
Verification passed.
测试 [h1 h2]
和 [h2 h1]
是否相同。测试失败,因为对应的向量元素指向不同对象。
testCase.verifyThat([h1 h2],IsSameHandleAs([h2 h1]))
Verification failed. --------------------- Framework Diagnostic: --------------------- IsSameHandleAs failed. --> Some elements in the handle array refer to the wrong handle. Actual Value: 1×2 ExampleHandle array with properties: Number Expected Handle Object: 1×2 ExampleHandle array with properties: Number
验证两个不同形状的句柄数组是否不同。
testCase.verifyThat([h1 h1 h2 h3],~IsSameHandleAs([h1 h1; h2 h3]))
Verification passed.
版本历史记录
在 R2013a 中推出R2019b: 文本值不再等效于枚举值
在鉴定中,文本值不再等效于句柄类的枚举值。以如下枚举类为例。
classdef MyClass < handle enumeration X Y end end
此测试失败,因为 "X"
不表示枚举 MyClass.X
。在以前的版本中,测试通过。
import matlab.unittest.TestCase import matlab.unittest.constraints.IsSameHandleAs testCase = TestCase.forInteractiveUse; testCase.verifyThat("X",IsSameHandleAs(MyClass.X))
Verification failed. --------------------- Framework Diagnostic: --------------------- IsSameHandleAs failed. --> Values do not refer to the same handle. --> Value must be a handle object. It is of class "string". --> Classes do not match. Actual Value class : [string] Expected Handle Object class : [MyClass] Actual Value: "X" Expected Handle Object: MyClass enumeration X
MATLAB 命令
您点击的链接对应于以下 MATLAB 命令:
请在 MATLAB 命令行窗口中直接输入以执行命令。Web 浏览器不支持 MATLAB 命令。
Select a Web Site
Choose a web site to get translated content where available and see local events and offers. Based on your location, we recommend that you select: .
You can also select a web site from the following list:
How to Get Best Site Performance
Select the China site (in Chinese or English) for best site performance. Other MathWorks country sites are not optimized for visits from your location.
Americas
- América Latina (Español)
- Canada (English)
- United States (English)
Europe
- Belgium (English)
- Denmark (English)
- Deutschland (Deutsch)
- España (Español)
- Finland (English)
- France (Français)
- Ireland (English)
- Italia (Italiano)
- Luxembourg (English)
- Netherlands (English)
- Norway (English)
- Österreich (Deutsch)
- Portugal (English)
- Sweden (English)
- Switzerland
- United Kingdom (English)