matlab.unittest.qualifications.Assertable 类
包: matlab.unittest.qualifications
用来确认测试先决条件的验证
描述
Assertable
类提供了一种用来确认测试先决条件的验证机制。除了对失败执行的操作外,Assertable
类与 matlab.unittest.qualifications
包中的其他验证类的工作方式相同。
断言失败时,Assertable
类将引发 AssertionFailedException
对象以告知测试框架发生失败。如果希望通过断言点处的失败来表示当前测试的其余部分无效,但又不想阻止后续测试的正常执行,这种行为会很有用。通常情况下,您可以使用断言来确保符合当前测试的先决条件,或是正确设置了脚手架。如果您不能保证脚手架拆解满足异常安全条件或不能在失败后恢复环境状态,请改用致命断言。
当在 TestCase
类的一个方法中产生断言失败时,该方法的类型确定哪些测试受到影响:
Test
方法 - 框架将整个Test
方法标记为失败和不完整。TestMethodSetup
或TestMethodTeardown
方法 - 框架将针对该方法实例运行的Test
方法标记为失败和不完整。TestClassSetup
或TestClassTeardown
方法 - 框架将整个测试类标记为失败和不完整。
当测试中出现违反先决条件但状态可恢复的情况时,断言可确保使用其余的测试。对于因不满足先决条件而导致失败的情况,它们不执行后续确认,从而防止不必要的失败。如果失败不影响测试的先决条件,也不会导致脚手架设置或拆解问题时,请使用确认,这样可以确保运行完整测试内容。
matlab.unittest.qualifications.Assertable
类是 handle
类。
方法
公共方法
Assertable
类为测试值和如何响应失败提供了几种验证方法。例如,assertEmpty
测试某个值为空,而 assertTrue
测试 actual 值为 true。
注意
Assertable
类的方法对应于 Verifiable
类的方法。它们仅在验证类型方面有所不同。您可以像调用 Verifiable
方法一样调用 Assertable
方法。
assertEqual |
断言 输入参数
名称-值参数
|
assertFail |
生成无条件的断言失败。类似于 输入参数
|
assertFalse |
断言 输入参数
|
assertNotEqual |
断言 输入参数
|
assertNotSameHandle |
断言 输入参数
|
assertReturnsTrue |
断言 输入参数
|
assertSameHandle |
断言 输入参数
|
assertThat |
断言 输入参数
|
assertTrue |
断言 输入参数
|
assertError |
断言 输入参数
输出参数
|
assertWarning |
断言 输入参数
输出参数
|
assertWarningFree |
断言 输入参数
输出参数
|
assertGreaterThan |
断言 输入参数
|
assertGreaterThanOrEqual |
断言 输入参数
|
assertLessThan |
断言 输入参数
|
assertLessThanOrEqual |
断言 输入参数
|
assertEmpty |
断言 输入参数
|
assertLength |
断言 输入参数
|
assertNotEmpty |
断言 输入参数
|
assertNumElements |
断言 输入参数
|
assertSize |
断言 输入参数
|
assertClass |
断言 输入参数
|
assertInstanceOf |
断言 输入参数
|
assertMatches |
断言 输入参数
|
assertSubstring |
断言 输入参数
|
事件
事件名称 | 触发器 | 事件数据 | 事件属性 |
---|---|---|---|
AssertionFailed | 断言失败时触发。QualificationEventData 对象传递给侦听程序回调函数。 | matlab.unittest.qualifications.QualificationEventData |
|
AssertionPassed | 通过断言时触发。QualificationEventData 对象传递给侦听程序回调函数。 | matlab.unittest.qualifications.QualificationEventData |
|
示例
验证测试的先决条件
测试写入临时文件夹中的文本文件。使用断言使测试失败,如果无法打开文件,则跳过对文件的写入。
在当前文件夹中名为 TextFileTest.m
的文件中,创建 TextFileTest
类,该类测试将数据写入在临时文件夹中打开的一个文本文件。如果无法打开文件进行写入,则测试失败,并通过使用断言跳过其余测试内容。
classdef TextFileTest < matlab.unittest.TestCase methods (Test) function testWithTemporaryFolder(testCase) folder = testCase.createTemporaryFolder(); file = fullfile(folder,"myFile.txt"); fid = fopen(file,"w"); testCase.addTeardown(@fclose,fid) testCase.assertNotEqual(fid,-1,"IO Problem") txt = repmat("ab",1,1000); dataToWrite = join(txt); fprintf(fid,"%s",dataToWrite); testCase.verifyEqual(string(fileread(file)),dataToWrite) end end end
运行 TextFileTest
类。在此示例中,断言通过,测试运行完毕。
runtests("TextFileTest")
Running TextFileTest . Done TextFileTest __________
ans = TestResult with properties: Name: 'TextFileTest/testWithTemporaryFolder' Passed: 1 Failed: 0 Incomplete: 0 Duration: 0.0467 Details: [1×1 struct] Totals: 1 Passed, 0 Failed, 0 Incomplete. 0.046653 seconds testing time.
详细信息
诊断
根据测试运行程序的配置,测试框架可能会在验证通过或失败时显示诊断信息。默认情况下,框架仅在鉴定失败时显示诊断信息。您可以通过自定义测试运行程序来覆盖默认行为。例如,您可以使用 DiagnosticsOutputPlugin
实例来显示失败和通过事件诊断信息。
要将诊断消息添加到测试用例中,请在任何鉴定方法中使用可选的 diagnostic
参数。您可以将 diagnostic
指定为字符串数组、字符数组、函数句柄或 matlab.automation.diagnostics.Diagnostic
对象数组。
异常安全
测试内容有时会更改其环境的状态。当环境可以还原到其原始状态时,即使存在异常,内容也满足异常安全条件。异常安全可确保引发异常的测试不会因破坏环境而影响后续测试。为了实现异常安全,请使用 addTeardown
方法执行所有拆解操作。在原始状态更改之前或之后立即调用 addTeardown
,中间没有任何可能引发异常的其他代码。
例如,下面的代码不满足异常安全条件。如果测试失败,测试框架不会关闭图窗。此图窗的存在可能导致后续测试失败。
% Not exception safe
f = figure;
testCase.assertEqual(actual,expected)
close(f)
另一方面,以下代码满足异常安全条件,因为不管测试结果如何,框架都会关闭图窗。
% Exception safe
f = figure;
testCase.addTeardown(@close,f)
testCase.assertEqual(actual,expected)
使用 addTeardown
拆解脚手架并不能保证代码就是异常安全的。以下代码不满足异常安全条件,因为对 addTeardown
的调用是在测试后进行的。如果测试失败,框架不会关闭图窗。
% Not exception safe
f = figure;
testCase.assertEqual(actual,expected)
testCase.addTeardown(@close,f)
版本历史记录
在 R2013a 中推出
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)