主要内容

matlab.unittest.plugins.DiagnosticsRecordingPlugin类

包:matlab.unittest.plugins

插件记录诊断的测试结果

描述

DiagnosticsRecordingPlugin启用对来自单元测试的诊断信息的编程访问。

这个类创建一个插件来记录测试结果的诊断。的TestRunner将这些诊断记录为DiagnosticRecord数组的细节财产的TestResult对象。每个元素DiagnosticRecord数组对应于单个测试中的事件。

如果您使用runtests功能testrunner函数没有输入,或运行的方法测试套件TestCase,测试框架默认使用此插件。此外,如果使用运行性能功能或运行的方法TimeExperiment,测试框架默认使用此插件。

建设

matlab.unittest.plugins.DiagnosticsRecordingPlugin创建插件来记录测试结果的诊断。默认情况下,DiagnosticsRecordingPlugin记录确认失败和记录的事件。

matlab.unittest.plugins.DiagnosticsRecordingPlugin(名称、值使用一个或多个指定的附加选项创建插件名称、值对参数。的名字必须出现在单引号内('')。您可以按以下任意顺序指定多个名称-值对参数:Name1, Value1,…,的家

输入参数

全部展开

名称-值对参数

指定可选的逗号分隔的字符对名称、值论据。的名字参数名和价值为对应值。的名字必须出现在引号内。您可以按任意顺序指定多个名称和值对参数,如下所示:Name1, Value1,…,的家

例子:matlab.unittest.plugins.DiagnosticsRecordingPlugin('IncludingPassingDiagnostics',true)创建一个插件,该插件记录通过的诊断以及失败鉴定和记录事件的诊断。

是否记录通过测试的诊断,指定为错误的真正的默认情况下,插件不会记录通过测试的诊断结果。

数据类型:逻辑

插件实例记录日志诊断的最大级别,指定为从0到4的整数值,或指定为matlab.unittest.Verbosity枚举对象。插件记录记录在此级别及以下的诊断信息。对象的成员对应于整数值matlab.unittest.Verbosity枚举。

默认情况下,插件记录在matlab.unittest.Verbosity.Terse级别(级别1)。要排除记录的诊断,请指定伐木层作为冗长。没有一个(第0级)。

日志诊断是通过调用日志(测试用例)原木(固定装置)方法

数字表示法 枚举成员名 冗长的描述
0 没有一个

任何信息

1 简短生硬的

最少信息

2 简洁的

信息量适中

3. 详细的

一些补充资料

4 冗长的

大量补充信息

记录事件的详细信息级别,指定为从0到4的整数值,或作为matlab.unittest.Verbosity枚举对象。整数值对应于matlab.unittest.Verbosity枚举。

插件记录通过、失败和记录的事件,其详细程度由输出细节.默认情况下,插件记录事件在matlab.unittest.Verbosity.Detailed级别(三级)。

数字表示法 枚举成员名 冗长的描述
0 没有一个

任何信息

1 简短生硬的

最少信息

2 简洁的

信息量适中

3. 详细的

一些补充资料

4 冗长的

大量补充信息

属性

全部展开

此属性是只读的。

指示器,如果记录了传递事件的诊断,则返回为错误的真正的.此属性错误的默认情况下,您可以将其指定为真正的在施工期间。

数据类型:逻辑

此属性是只读的。

插件记录的日志诊断的最大详细级别,以matlab.unittest.Verbosity枚举对象。插件记录记录在此级别及以下的诊断信息。默认情况下,此属性值为matlab.unittest.Verbosity.Terse.您可以在插件构建期间指定一个不同的日志级别。

日志诊断是通过调用日志(测试用例)原木(固定装置)方法

此属性是只读的。

事件详细信息的显示级别,返回为matlab.unittest.Verbosity枚举对象。该插件显示通过、失败和记录的事件,其详细程度由输出细节.默认情况下,此属性值为matlab.unittest.Verbosity.Detailed。您可以在插件构造期间指定不同的输出详细信息。

复制语义

要了解句柄类如何影响复制操作,请参阅复制对象

例子

全部崩溃

在工作文件夹中,创建一个文件,ExampleTest.m,包含以下测试类。这个测试的目的是说明如何使用DiagnosticsRecordingPlugin插件,它并不是一个有代表性的单元测试。

classdefExampleTest方法(测试)作用testA(testCase)testCase.log(1,简洁的日志消息的%的日志testCase.log (3“详细日志消息”%的日志testCase.verifyEqual(3+2,5)%通过testCase.assumeTrue(真)%通过测试用例。验证大于(5,9)%失败πtestCase.assertEqual (3.14)%失败/不完整终止作用testB(testCase)%此测试包含故意错误-传递字符%而不是一个变量的功能。A = [1 2];testCase.verifyEqual(的“一个”), [1]);%错误终止终止终止

在命令提示下,从示例测试类。

套件=测试套件(“示例测试”);

创建一个没有插件的测试运行程序。此代码创建一个静默运行程序,并为您提供对已安装插件的完全控制。添加DiagnosticsRecordingPlugin给试跑者。

进口matlab.unittest.TestRunner;进口matlab.unittest.plugins.DiagnosticsRecordingPlugin;runner=TestRunner.withNoPlugins;runner.addPlugin(诊断记录插件);

运行测试。

结果= runner.run(套);

显示第二次测试的结果。测试失败且未完成。

结果(2)
ans=TestResult,属性:Name:'ExampleTest/testB'通过:0失败:1不完整:1持续时间:7.8912e-04详细信息:[1×1结构]总计:0通过,1失败,1不完整。0.00078912秒测试时间。

索引到诊断记录中以显示更多信息。

(2) .Details.DiagnosticRecord结果
[1×1 MException] AdditionalDiagnosticResults: [1×0 matlab.unittest.diagnostics.]诊断结果栈:[1×1 struct]报告:'错误发生在ExampleTest/testB和它没有运行到完成…'

测试抛出一个未捕获的异常。

收集第一次测试的诊断记录,种皮

(1) .Details.DiagnosticRecord testA_records =结果
test_records = 1×3 heterogeneous DiagnosticRecord (LoggedDiagnosticRecord, QualificationDiagnosticRecord)数组,带有属性:Event EventScope EventLocation Stack Report

查看插件记录的事件种皮

{testA_records.Event}'
ans = 3×1 cell array {'DiagnosticLogged'} {'VerificationFailed'} {'AssertionFailed'}

插件记录消息记录在简短生硬的冗长程度,以及验证和断言失败。

创建一个插件,记录所有详细级别的消息,包括传递诊断。重新运行测试并收集诊断记录种皮

runner=TestRunner.withNoPlugins;runner.addPlugin(DiagnosticsRecordingPlugin(...“包括传递诊断”,真的,“OutputDetail”,4,“LoggingLevel”,4));results=runner.run(suite);testA_记录=results(1).Details.diagnosticord;

查看插件记录的事件种皮

{testA_records.Event}'
ans = 6×1 cell array{'诊断日志'}{'诊断日志'}{'验证通过'}{'假设通过'}{'验证失败'}{'AssertionFailed'}

插件记录所有限定和调用的诊断信息日志方法

选择具有失败事件诊断的所有记录。

failedRecords = selectFailed (testA_records)
failedRecords = 1×2 QualificationDiagnosticRecord数组,带有属性:Event EventScope EventLocation TestDiagnosticResults FrameworkDiagnosticResults AdditionalDiagnosticResults堆栈报告

选择所有通过事件诊断的记录,并显示第一个记录的报告。

passedRecords = selectPassed (testA_records);passedRecords(1)。报告
ans='在ExampleTest/testA中通过验证。-------------框架诊断:---------------已通过verifyEqual。-->使用“isequaln”时,值相等。实际值:5预期值:5------------------堆栈信息:-------------在C:\work\ExampleTest.m(ExampleTest.testA)中的6'

选择不完整事件的所有记录。

incompleteRecords = selectIncomplete (testA_records)
incompleteRecords = qualiationdiagnosticrecord与属性:Event: 'AssertionFailed' EventScope: TestMethod EventLocation: 'ExampleTest/testA' TestDiagnosticResults: [1×0 matlab.unittest.diagnostics. EventScope: TestMethod EventLocation: 'ExampleTest/testA'frameworkdiagnostics: [1×1 matlab.unittest.diagnostics.]附加诊断结果:[1×0 matlab.unittest.diagnostics.]诊断结果栈:[1×1结构]报告:'Assertion failed in ExampleTest/testA and it did not run to completion…'

由于此事件是一个断言失败,框架还将此记录与失败诊断一起返回为failedRecords (2)

选择所有记录事件的记录并显示记录的消息。

loggedRecords=选择Logged(testA_记录);{loggedRecords.Report}'
ans=2×1单元阵列{'[Terse]诊断记录(2018-04-12 13:15:23):简写日志消息'}{'[Detailed]诊断记录(2018-04-12 13:15:23):详细日志消息'}
介绍了R2016a