Main Content

matlab.mock.TestCase 类

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

用于使用模拟框架编写测试的类

描述

matlab.mock.TestCase 类可用于编写使用模拟框架的测试。由于 matlab.mock.TestCase 类是从 matlab.unittest.TestCase 类派生的,因此您的测试可以使用单元测试框架的功能,例如鉴定、脚手架和插件。有关在测试中模拟依存关系的详细信息,请参阅创建 Mock 对象

matlab.mock.TestCase 类是一个 handle 类。

类属性

Abstract
true

有关类属性的信息,请参阅类属性

创建对象

在大多数情况下,您不需要直接创建 matlab.mock.TestCase 类的实例。模拟框架在运行测试时会自动创建 matlab.mock.TestCase 实例。

要为交互式命令行测试创建 matlab.mock.TestCase 实例,请使用 forInteractiveUse 静态方法。

方法

全部展开

示例

全部折叠

使用 matlab.mock.TestCase 类创建一个 mock 并测试与该 mock 的交互。

首先,导入此示例中使用的类。

import matlab.mock.TestCase
import matlab.unittest.constraints.IsLessThan

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

testCase = TestCase.forInteractiveUse;

用两个方法为一个银行帐户类创建一个 mock。

[mock,behavior] = testCase.createMock("AddedMethods",["deposit" "isOpen"]);

设置其行为。使用负输入调用 deposit mock 方法时引发错误。

testCase.throwExceptionWhen(behavior.deposit(IsLessThan(0)), ...
    MException("Account:deposit:Negative", ...
    "Deposit amount must be positive."))

使用该 mock 调用带有正输入的 deposit

mock.deposit(100)

验证是否使用了指定的输入调用 deposit 方法。

testCase.verifyCalled(behavior.deposit(100))
Verification passed.

测试是否使用输入值 50 调用了该方法。测试失败。

testCase.verifyCalled(behavior.deposit(50))
Verification failed.
    ---------------------
    Framework Diagnostic:
    ---------------------
    verifyCalled failed.
    --> Method 'deposit' was not called with the specified signature.
    --> All observed method call(s) with any signature are:
            deposit([1×1 matlab.mock.classes.Mock], 100)
    
    Specified method call:
    MethodCallBehavior
        [...] = deposit(<Mock>, 50)

验证未使用负输入调用过 deposit

testCase.verifyNotCalled(behavior.deposit(IsLessThan(0)))
Verification passed.

测试是否至少使用 mock 对象作为唯一输入调用过一次 isOpen 方法。测试失败。

testCase.verifyCalled(withExactInputs(behavior.isOpen))
Verification failed.
    ---------------------
    Framework Diagnostic:
    ---------------------
    verifyCalled failed.
    --> Method 'isOpen' was never called.
    
    Specified method call:
    MethodCallBehavior
        [...] = isOpen(<Mock>)

matlab.mock.TestCase 类从 matlab.unittest.TestCase 类及其超类继承方法。使用继承的 verifyError 方法验证使用负输入调用 deposit 方法是否会导致您在设置行为时指定的错误。

testCase.verifyError(@() mock.deposit(-10),"Account:deposit:Negative")
Verification passed.

版本历史记录

在 R2017a 中推出