matlab.mock.TestCase 类
命名空间: matlab.mock
超类: matlab.unittest.TestCase
用于使用模拟框架编写测试的类
描述
matlab.mock.TestCase
类可用于编写使用模拟框架的测试。由于 matlab.mock.TestCase
类是从 matlab.unittest.TestCase
类派生的,因此您的测试可以使用单元测试框架的功能,例如鉴定、脚手架和插件。有关在测试中模拟依存关系的详细信息,请参阅创建 Mock 对象。
matlab.mock.TestCase
类是一个 handle
类。
创建对象
在大多数情况下,您不需要直接创建 matlab.mock.TestCase
类的实例。模拟框架在运行测试时会自动创建 matlab.mock.TestCase
实例。
要为交互式命令行测试创建 matlab.mock.TestCase
实例,请使用 forInteractiveUse
静态方法。
方法
公共方法
除了这些方法之外,matlab.mock.TestCase
类还从 matlab.unittest.TestCase
类及其超类继承方法。
createMock | 创建 mock 对象 |
matlab.mock.TestCase.forInteractiveUse | 创建供交互使用 mock 对象的测试用例 |
assignOutputsWhen | 定义方法调用或属性访问的返回值 |
returnStoredValueWhen | 访问属性时返回所存储的值 |
storeValueWhen | 设置属性时存储值 |
throwExceptionWhen | 对方法调用或属性交互引发异常 |
clearMockHistory | 清除 mock 对象交互的历史记录 |
getMockHistory | 返回 mock 对象交互的历史记录 |
assertAccessed | 断言属性已被访问过 |
assertCalled | 断言使用特定输入值调用过方法 |
assertSet | 断言属性已经过设置 |
assertNotAccessed | 断言属性未被访问过 |
assertNotCalled | 断言未使用特定输入值调用过方法 |
assertNotSet | 断言属性未经过设置 |
assumeAccessed | 假定属性已被访问过 |
assumeCalled | 假定使用特定输入值调用过方法 |
assumeSet | 假定属性已经过设置 |
assumeNotAccessed | 假定属性未被访问过 |
assumeNotCalled | 假定未使用特定输入值调用过方法 |
assumeNotSet | 假定属性未经过设置 |
fatalAssertAccessed | 致命断言属性已被访问过 |
fatalAssertCalled | 致命断言使用特定输入值调用过方法 |
fatalAssertSet | 致命断言属性已经过设置 |
fatalAssertNotAccessed | 致命断言属性未被访问过 |
fatalAssertNotCalled | 致命断言未使用特定输入值调用过方法 |
fatalAssertNotSet | 致命断言属性未经过设置 |
verifyAccessed | 确认属性已被访问过 |
verifyCalled | 确认使用特定输入值调用过方法 |
verifySet | 确认属性已经过设置 |
verifyNotAccessed | 确认属性未被访问过 |
verifyNotCalled | 确认未使用特定输入值调用过方法 |
verifyNotSet | 确认属性未经过设置 |
示例
使用 mock 进行测试
使用 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 中推出
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)