matlab.unittest.plugins.DiagnosticsRecordingPlugin 类
命名空间: matlab.unittest.plugins
用来记录测试结果的诊断信息的插件
描述
matlab.unittest.plugins.DiagnosticsRecordingPlugin 类允许通过编程方式访问单元测试的诊断信息。
此类创建一个插件以记录测试结果的诊断信息。测试运行器将这些诊断信息以 DiagnosticRecord 数组形式记录在 TestResult 对象的 Details 属性中。DiagnosticRecord 数组的每个元素对应于一个单独的测试事件。
如果您通过 runtests 函数、不带输入的 testrunner 函数或者 TestSuite 或 TestCase 的 run 方法运行测试,默认情况下测试框架将使用此插件。如果您通过 runperf 函数或者通过 TimeExperiment 的 run 方法运行性能测试,默认情况下测试框架也使用此插件。
构造
plugin = matlab.unittest.plugins.DiagnosticsRecordingPlugin 创建一个插件以记录测试结果的诊断信息。默认情况下,插件记录失败的鉴定和日志记录事件。
plugin = matlab.unittest.plugins.DiagnosticsRecordingPlugin( 使用一个或多个名称-值参量指定选项。例如,Name,Value)plugin = matlab.unittest.plugins.DiagnosticsRecordingPlugin("IncludingPassingDiagnostics",true) 创建一个插件,该插件除了记录关于鉴定失败和日志记录事件的诊断信息外,还记录通过测试的诊断信息。
名称-值参数
将可选的参量对组指定为 Name1=Value1,...,NameN=ValueN,其中 Name 是参量名称,Value 是对应的值。名称-值参量必须出现在其他参量之后,但参量对组的顺序无关紧要。
示例: plugin = matlab.unittest.plugins.DiagnosticsRecordingPlugin(IncludingPassingDiagnostics=true)
在 R2021a 之前,使用逗号分隔每个名称和值,并用引号将 Name 引起来。
示例: plugin = matlab.unittest.plugins.DiagnosticsRecordingPlugin("IncludingPassingDiagnostics",true)
是否记录通过测试的诊断信息,指定为 false 或 true。默认情况下,插件不记录通过测试的诊断信息。
数据类型: logical
插件实例记录日志记录诊断信息的最高级别,指定为介于 0 和 4 之间的整数值或 matlab.automation.Verbosity 枚举对象。该插件记录在此级别和更低级别记录的诊断信息。整数值对应于 matlab.automation.Verbosity 枚举的成员。
默认情况下,插件记录在 matlab.automation.Verbosity.Terse 级别(级别 1)记录的诊断信息。要排除所记录的诊断信息,请将 LoggingLevel 指定为 Verbosity.None(级别 0)。
记录的诊断信息是您通过调用 log (TestCase) 或 log (Fixture) 方法提供给测试框架的诊断信息。
| 数值表示 | 枚举成员名称 | 详细程度描述 |
|---|---|---|
0 | None | 无信息 |
1 | Terse | 最少的信息 |
2 | Concise | 适中信息量 |
3 | Detailed | 部分补充信息 |
4 | Verbose | 大量补充信息 |
记录事件的详细信息级别,指定为介于 0 和 4 之间的整数值或 matlab.automation.Verbosity 枚举对象。整数值对应于 matlab.automation.Verbosity 枚举的成员。
该插件使用 OutputDetail 指定的信息量来记录通过事件、失败事件和日志记录事件。默认情况下,该插件在 matlab.automation.Verbosity.Detailed 级别(级别 3)记录事件。
| 数值表示 | 枚举成员名称 | 详细程度描述 |
|---|---|---|
0 | None | 无信息 |
1 | Terse | 最少的信息 |
2 | Concise | 适中信息量 |
3 | Detailed | 部分补充信息 |
4 | Verbose | 大量补充信息 |
属性
此 属性 为只读。
表明是否记录通过事件的诊断信息的指示符,返回为 false 或 true。默认情况下,此属性为 false。您可以在构造过程中将其指定为 true。
数据类型: logical
此 属性 为只读。
插件记录的日志记录诊断信息的最高详细级别,以 matlab.automation.Verbosity 枚举对象形式返回。该插件记录在此级别和更低级别记录的诊断信息。默认情况下,此属性值为 matlab.automation.Verbosity.Terse。您可以在插件构造期间指定不同的日志记录级别。
记录的诊断信息是您通过调用 log (TestCase) 或 log (Fixture) 方法提供给测试框架的诊断信息。
此 属性 为只读。
事件详细信息的显示级别,以 matlab.automation.Verbosity 枚举对象形式返回。该插件使用 OutputDetail 指定的信息量来显示通过事件、失败事件和日志记录事件。默认情况下,此属性值为 matlab.automation.Verbosity.Detailed。您可以在插件构造期间指定不同的输出详细信息。
复制语义
句柄。要了解句柄类如何影响复制操作,请参阅复制对象。
示例
在您的工作文件夹中,创建一个包含以下测试类的文件 ExampleTest.m。本测试旨在演示如何使用 DiagnosticsRecordingPlugin 类,并不是典型的单元测试。
classdef ExampleTest < matlab.unittest.TestCase methods (Test) function testA(testCase) testCase.log(1,'Terse log message') % logs testCase.log(3,'Detailed log message') % logs testCase.verifyEqual(3+2,5) % passes testCase.assumeTrue(true) % passes testCase.verifyGreaterThan(5, 9) % fails testCase.assertEqual(3.14,pi) % fails/incomplete end function testB(testCase) % This test contains an intentional error - passing a character % instead of a variable to the ones function. a = [1 2]; testCase.verifyEqual(ones('a'),[1 1]); % errors end end end
在命令提示符下,基于 ExampleTest 类创建测试套件。
suite = testsuite('ExampleTest');创建一个不含任何插件的测试运行器。此代码创建一个静默运行器并向您提供对安装的插件的完整控制权。向测试运行器添加一个 DiagnosticsRecordingPlugin 实例。
import matlab.unittest.TestRunner import matlab.unittest.plugins.DiagnosticsRecordingPlugin runner = TestRunner.withNoPlugins; runner.addPlugin(DiagnosticsRecordingPlugin)
运行测试。
results = runner.run(suite);
显示第二个测试的结果。测试失败且未完成。
results(2)
ans =
TestResult with properties:
Name: 'ExampleTest/testB'
Passed: 0
Failed: 1
Incomplete: 1
Duration: 0.0268
Details: [1×1 struct]
Totals:
0 Passed, 1 Failed (rerun), 1 Incomplete.
0.026778 seconds testing time.为诊断记录进行索引以显示更多信息。测试引发未捕获的异常。
results(2).Details.DiagnosticRecord
ans =
ExceptionDiagnosticRecord with properties:
Event: 'ExceptionThrown'
EventScope: TestMethod
EventLocation: 'ExampleTest/testB'
Exception: [1×1 MException]
AdditionalDiagnosticResults: [1×0 matlab.automation.diagnostics.DiagnosticResult]
Stack: [1×1 struct]
Report: 'Error occurred in ExampleTest/testB and it did not run to completion...'收集第一个测试 testA 的诊断记录。
testA_records = results(1).Details.DiagnosticRecord
testA_records =
1×3 heterogeneous DiagnosticRecord (LoggedDiagnosticRecord, QualificationDiagnosticRecord) array with properties:
Event
EventScope
EventLocation
Stack
Report查看插件为 testA 记录的事件。插件记录 Terse 详细级别的日志记录消息以及失败的验证和断言。
{testA_records.Event}'ans =
3×1 cell array
{'DiagnosticLogged' }
{'VerificationFailed'}
{'AssertionFailed' }创建一个插件,用于记录所有详细级别的消息并包括通过事件的诊断信息。重新运行测试并收集 testA 的诊断记录。
runner = TestRunner.withNoPlugins; runner.addPlugin(DiagnosticsRecordingPlugin( ... 'IncludingPassingDiagnostics',true,'OutputDetail',4,'LoggingLevel',4)) results = runner.run(suite); testA_records = results(1).Details.DiagnosticRecord;
查看插件为 testA 记录的事件。该插件记录所有鉴定的诊断信息以及所有调用 log 方法获得的诊断信息。
{testA_records.Event}'ans =
6×1 cell array
{'DiagnosticLogged' }
{'DiagnosticLogged' }
{'VerificationPassed'}
{'AssumptionPassed' }
{'VerificationFailed'}
{'AssertionFailed' }选择所有具有失败事件诊断信息的记录。
failedRecords = selectFailed(testA_records)
failedRecords =
1×2 QualificationDiagnosticRecord array with properties:
Event
EventScope
EventLocation
TestDiagnosticResults
FrameworkDiagnosticResults
AdditionalDiagnosticResults
Stack
Report选择所有具有通过事件诊断信息的记录,并显示第一条记录的报告。
passedRecords = selectPassed(testA_records); passedRecords(1).Report
ans =
'Verification passed in ExampleTest/testA.
---------------------
Framework Diagnostic:
---------------------
verifyEqual passed.
--> The numeric values are equal using "isequaln".
Actual Value:
5
Expected Value:
5
------------------
Stack Information:
------------------
In C:\work\ExampleTest.m (ExampleTest.testA) at 6'选择未完成事件的所有记录。由于此事件属于断言失败,框架还将此记录以带有失败诊断信息的 failedRecords(2) 形式返回。
incompleteRecords = selectIncomplete(testA_records)
incompleteRecords =
QualificationDiagnosticRecord with properties:
Event: 'AssertionFailed'
EventScope: TestMethod
EventLocation: 'ExampleTest/testA'
TestDiagnosticResults: [1×0 matlab.automation.diagnostics.DiagnosticResult]
FrameworkDiagnosticResults: [1×1 matlab.automation.diagnostics.DiagnosticResult]
AdditionalDiagnosticResults: [1×0 matlab.automation.diagnostics.DiagnosticResult]
Stack: [1×1 struct]
Report: 'Assertion failed in ExampleTest/testA and it did not run to completion...'选择具有日志记录事件的所有记录并显示日志记录的消息。
loggedRecords = selectLogged(testA_records);
{loggedRecords.Report}'ans =
2×1 cell array
{'[Terse] Diagnostic logged (2022-10-15 19:10:56): Terse log message' }
{'[Detailed] Diagnostic logged (2022-10-15 19:10:56): Detailed log message'}版本历史记录
在 R2016a 中推出
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)