Main Content

verifyNotSet

类: matlab.mock.TestCase
命名空间: matlab.mock

确认属性未经过设置

说明

verifyNotSet(testcase,behavior) 确认某属性未经过设置。

示例

verifyNotSet(testcase,behavior,diagnostic) 还将 diagnostic 中的诊断信息与鉴定相关联。根据测试运行器的配置,测试框架可能会在鉴定通过或失败时显示诊断信息。默认情况下,框架仅在鉴定失败时显示诊断信息。您可以通过自定义测试运行器来覆盖默认行为。例如,使用 DiagnosticsOutputPlugin 实例来显示失败和通过事件诊断信息。

示例

输入参数

全部展开

测试用例的实例,指定为 matlab.mock.TestCase 对象。

mock 的行为,指定为 matlab.mock.PropertyBehavior 实例。要创建 matlab.mock.PropertyBehavior 实例,请访问行为对象的属性。

示例: behavior.PropertyFoo

要显示的诊断信息,指定为字符串数组、字符数组、函数句柄或 matlab.automation.diagnostics.Diagnostic 对象。诊断值可以是非标量。有关详细信息,请参阅 matlab.automation.diagnostics.Diagnostic

示例: "My diagnostic message."

示例: @() datetime('now')

示例

全部展开

创建一个具有隐式接口的 mock 以供交互使用。该接口包括 PropertyFooPropertyBar 属性。为 PropertyFoo 赋值。

testCase = matlab.mock.TestCase.forInteractiveUse;
[mock,behavior] = testCase.createMock('AddedProperties', ...
    ["PropertyFoo","PropertyBar"]);
mock.PropertyFoo = 123;

验证 PropertyBar 未经过设置。

testCase.verifyNotSet(behavior.PropertyBar);
Verification passed.

创建一个具有隐式接口的 mock 以供交互使用。该接口包括 PropertyFooPropertyBar 属性。为 PropertyFoo 赋值。

testCase = matlab.mock.TestCase.forInteractiveUse;
[mock,behavior] = testCase.createMock('AddedProperties', ...
    ["PropertyFoo","PropertyBar"]);
mock.PropertyFoo = 123;

验证 PropertyFoo 未经过设置。在失败时显示诊断信息。

testCase.verifyNotSet(behavior.PropertyFoo, ...
    'PropertyFoo should not have been set.');
Verification failed.
    ----------------
    Test Diagnostic:
    ----------------
    PropertyFoo should not have been set.
    ---------------------
    Framework Diagnostic:
    ---------------------
    verifyNotSet failed.
    --> Property 'PropertyFoo' was unexpectedly set to the specified value 1 time(s).
    --> All observed property set operation(s) where the property was set to any value are:
            <Mock>.PropertyFoo = 123
    
    Specified property set operation:
    PropertySetBehavior
        <Mock>.PropertyFoo = <IsAnything constraint>

提示

使用此确认在不引发异常的条件下生成和记录失败。由于确认不会引发异常,因此即使出现确认失败的情形,依然会完成所有的测试内容。通常,确认是单元测试的主要鉴定类型,因为这些确认一般不要求提前从测试中退出。使用其他鉴定类型来测试是否违反先决条件或测试安装是否正确。

  • 使用断言鉴定确保测试环境满足无论如何都不会导致测试失败的先决条件。假设失败会生成已过滤的测试,且测试框架会将测试设为 Incomplete

  • 当失败条件导致当前测试内容的剩余部分都失效,但不会阻止后续测试方法正确执行时,使用断言鉴定。断言点处的失败会将当前测试方法标记为失败且未完成。

  • 使用致命断言鉴定在失败时中止测试会话。当失败涉及根本以致没必要继续测试时,这种鉴定会很有用。当脚手架拆解未能正确还原 MATLAB® 状态,适合中止测试并启动一个新会话时,这些鉴定也很有用。

备选方法

使用 verifyNotSet 方法在功能上等同于对 Verifiable 类的 verifyThat 方法使用否定的 matlab.mock.constraints.WasSet 约束。例如,以下代码块在功能上是等效的。

% Using the verifyNotSet method
testCase.verifyNotSet(behavior.PropertyBar);

% Using the WasSet constraint with verifyThat method
import matlab.mock.constraints.WasSet;
testCase.verifyThat(behavior.PropertyBar,~WasSet);
不过,在使用 WasSet 约束时,会有更多功能。例如,您可以指定某属性未被设置特定次数。

版本历史记录

在 R2017a 中推出