selectIncomplete
类: matlab.unittest.plugins.diagnosticrecord.DiagnosticRecord
命名空间: matlab.unittest.plugins.diagnosticrecord
返回未完成事件的诊断记录
语法
selectedRecords = selectIncomplete(records)
说明
selectedRecords = selectIncomplete(
以 records
)matlab.unittest.plugins.diagnosticrecord.QualificationDiagnosticRecord
和 matlab.unittest.plugins.diagnosticrecord.ExceptionDiagnosticRecord
实例的数组形式返回未完成事件的诊断记录。
未完成事件是指在 TestResult
中生成未完成测试的事件。这些事件包括假设失败、断言失败以及未捕获的 MException
对象。
输入参数
records
— 记录的测试结果诊断信息
由 matlab.unittest.plugins.diagnosticrecord.DiagnosticRecord
实例组成的数组
记录的测试结果诊断信息,以 matlab.unittest.plugins.diagnosticrecord.DiagnosticRecord
实例的数组形式指定。通过 TestResult
中的 Details
属性的 DiagnosticRecord
字段访问记录的诊断信息。例如,如果您的测试结果存储在变量 results
中,通过调用 records = result(2).Details.DiagnosticRecord
找到为第二个测试记录的诊断信息。
示例
选择测试结果的诊断信息
在您的工作文件夹中,创建一个包含以下测试类的文件 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.unittest.plugins.DiagnosticsRecordingPlugin
| matlab.unittest.plugins.diagnosticrecord.DiagnosticRecord
| matlab.unittest.plugins.diagnosticrecord.ExceptionDiagnosticRecord
| matlab.unittest.plugins.diagnosticrecord.QualificationDiagnosticRecord
| selectPassed
| selectFailed
| selectLogged
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)