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 |
断言 输入参量
|
assertEqualsBaseline(需要 MATLAB Test™) |
断言 输入参量
名称-值参量
|
事件
| 事件名称 | 触发器 | 事件数据 | 事件属性 |
|---|---|---|---|
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 Test 许可证,可以使用 assertEqualsBaseline 方法来测试某个值是否等于基线数据。
MATLAB Command
You clicked a link that corresponds to this MATLAB command:
Run the command by entering it in the MATLAB Command Window. Web browsers do not support MATLAB commands.
选择网站
选择网站以获取翻译的可用内容,以及查看当地活动和优惠。根据您的位置,我们建议您选择:。
您也可以从以下列表中选择网站:
如何获得最佳网站性能
选择中国网站(中文或英文)以获得最佳网站性能。其他 MathWorks 国家/地区网站并未针对您所在位置的访问进行优化。
美洲
- América Latina (Español)
- Canada (English)
- United States (English)
欧洲
- 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)