通常,对于基于函数的测试,您创建一个测试文件并将文件名传递给runtests
函数,而不显式地创建测试
对象。但是,如果您创建了一个显式的测试套件,那么在基于功能的测试中还可以使用其他特性。这些特性包括:
测试日志和冗长
测试选择
定制测试运行器的插件
对于其他功能,请考虑使用基于类的单元测试.
在编写测试时,使用applyFixture
方法处理设置和拆卸代码的操作,如:
更改当前工作文件夹
向路径添加文件夹
创建临时文件夹
抑制警告的显示
这些固定装置
代替手动编码的操作setupOnce
,teardownOnce
,设置
,拆卸
基于函数测试的函数。
例如,如果您手动编写设置和拆卸代码来为每个测试设置临时文件夹,然后将该文件夹设置为当前工作文件夹设置
和拆卸
函数可以是这样的。
函数设置(testCase)%存储当前文件夹testCase.TestData.origPath = pwd;%创建临时文件夹testCase.TestData.tmpFolder = [“tmpFolder”datestr (30)];mkdir (testCase.TestData.tmpFolder)%更改为临时文件夹cd (testCase.TestData.tmpFolder)结束函数拆卸(testCase)%更改为原始文件夹cd (testCase.TestData.origPath)%删除临时文件夹删除目录(testCase.TestData.tmpFolder)结束
但是,您也可以使用一个fixture将这两个函数替换为修改过的函数设置
函数。装置存储恢复初始状态和执行拆卸操作所需的信息。
函数设置(testCase)%创建临时文件夹f = testCase.applyFixture (matlab.unittest.fixtures.TemporaryFolderFixture);%更改为临时文件夹testCase.applyFixture (matlab.unittest.fixtures.CurrentFolderFixture (f.Folder));结束
的测试函数可以使用日志
方法。默认情况下,测试运行程序报告在详细级别1上记录的诊断(简洁
).使用matlab.unittest.plugins.LoggingPlugin.withVerbosity
方法来响应其他冗长级别的消息。构造一个TestRunner
对象,添加LoggingPlugin
,用运行
方法。有关创建测试运行器的更多信息,请参见测试运行器定制.
调用基于函数的测试将返回一组测试
对象。你也可以用thetestsuite
函数或matlab.unittest.TestSuite.fromFile
方法。如果您想要一个特定的测试,并且您知道测试名称,您可以使用matlab.unittest.TestSuite.fromName
.如果要从特定文件夹中的所有测试创建套件,可以使用matlab.unittest.TestSuite.fromFolder
.
对于显式的测试套件,使用选择器来优化您的套件。有几个选择器只适用于基于类的测试,但您可以根据测试名称为套件选择测试:
使用“名字”
套件生成方法中的名称-值对参数,例如matlab.unittest.TestSuite.fromFile
.
在套件生成方法中使用这些方法,例如matlab.unittest.TestSuite.fromFile
,或创建一个套件并使用selectIf
方法。例如,在这个清单中,的四个值套件
是等价的。
进口matlab.unittest.selectors.HasName进口matlab.unittest.constraints.ContainsSubstring进口matlab.unittest.TestSuite.fromFilef =“rightTriTolTest.m”;选择器= HasName (ContainsSubstring (“三角形”));% fromFile,名称-值对套件= TestSuite.fromFile (f,“名字”,三角形‘* *’)% fromFile,选择器套件= TestSuite.fromFile (f,选择器)% selectIf,名称-值对fullSuite = TestSuite.fromFile (f);套件= selectIf (fullSuite,“名字”,三角形‘* *’)% selectIf,选择器fullSuite = TestSuite.fromFile (f);套件= selectIf (fullSuite选择器)
如果您使用带有选择器或名称-值对的套件创建方法之一,测试框架将创建筛选的套件。如果你使用selectIf
方法,测试框架创建一个完整的测试套件,然后对其进行过滤。对于大型测试套件,这种方法可能具有性能影响。
有几种方法可以运行基于函数的测试。
有关更多信息,请参见运行各种工作流的测试.
在某些情况下,测试框架使用DiagnosticsRecordingPlugin
插件记录诊断的测试结果。如果你做了以下任何一件事,框架默认使用插件:
使用runtests
函数。
使用testrunner
函数没有输入。
属性运行性能测试runperf
函数。
属性运行性能测试运行
的方法TimeExperiment
类。
运行测试后,可以使用DiagnosticRecord
字段细节
财产的TestResult
对象。例如,如果您的测试结果存储在变量中结果
,然后(2) .Details.DiagnosticRecord结果
包含套件中第二个测试的记录诊断。
记录的诊断如下DiagnosticRecord
对象。要访问测试的特定类型的测试诊断,请使用selectFailed
,selectPassed
,selectIncomplete
,selectLogged
的方法DiagnosticRecord
类。
默认情况下,DiagnosticsRecordingPlugin
插件在matlab.unittest.Verbosity.Terse
冗长的水平。有关更多信息,请参见DiagnosticsRecordingPlugin
和DiagnosticRecord
.
使用一个TestRunner
对象来定制框架运行测试套件的方式。与一个TestRunner
对象,您可以:
属性在命令窗口中不产生输出withNoPlugins
方法。
控件并行运行测试runInParallel
方法。
控件向测试运行程序添加插件addPlugin
方法。
例如,使用测试套件,套件
,以创建一个静默的测试运行器并使用运行
的方法TestRunner
.
跑步者= matlab.unittest.TestRunner.withNoPlugins;结果= runner.run(套);
使用插件进一步定制测试运行程序。例如,您可以重定向输出、确定代码覆盖率或更改测试运行器对警告的响应方式。有关更多信息,请参见向测试运行器添加插件和插件
类。
matlab.unittest.constraints
|matlab.unittest.diagnostics
|matlab.unittest.qualifications
|matlab.unittest.selectors
|matlab.unittest.TestCase
|matlab.unittest.TestSuite