主要内容

扩展基于函数的测试

通常,对于基于函数的测试,您创建一个测试文件并将文件名传递给runtests函数,而不显式地创建测试对象。但是,如果您创建了一个显式的测试套件,那么在基于功能的测试中还可以使用其他特性。这些特性包括:

  • 测试日志和冗长

  • 测试选择

  • 定制测试运行器的插件

对于其他功能,请考虑使用基于类的单元测试

安装和拆卸代码的装置

在编写测试时,使用applyFixture方法处理设置和拆卸代码的操作,如:

  • 更改当前工作文件夹

  • 向路径添加文件夹

  • 创建临时文件夹

  • 抑制警告的显示

这些固定装置代替手动编码的操作setupOnceteardownOnce设置,拆卸基于函数测试的函数。

例如,如果您手动编写设置和拆卸代码来为每个测试设置临时文件夹,然后将该文件夹设置为当前工作文件夹设置拆卸函数可以是这样的。

函数设置(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,或创建一个套件并使用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方法,测试框架创建一个完整的测试套件,然后对其进行过滤。对于大型测试套件,这种方法可能具有性能影响。

测试运行

有几种方法可以运行基于函数的测试。

运行所有测试 使用功能
在一个文件中 runtests使用测试文件的名称
在一套 运行的套件
在一个带有自定义测试运行器的套件中 运行.(见测试运行器定制.)

有关更多信息,请参见运行各种工作流的测试

测试诊断的程序化访问

在某些情况下,测试框架使用DiagnosticsRecordingPlugin插件记录诊断的测试结果。如果你做了以下任何一件事,框架默认使用插件:

运行测试后,可以使用DiagnosticRecord字段细节财产的TestResult对象。例如,如果您的测试结果存储在变量中结果,然后(2) .Details.DiagnosticRecord结果包含套件中第二个测试的记录诊断。

记录的诊断如下DiagnosticRecord对象。要访问测试的特定类型的测试诊断,请使用selectFailedselectPassedselectIncomplete,selectLogged的方法DiagnosticRecord类。

默认情况下,DiagnosticsRecordingPlugin插件在matlab.unittest.Verbosity.Terse冗长的水平。有关更多信息,请参见DiagnosticsRecordingPluginDiagnosticRecord

测试运行器定制

使用一个TestRunner对象来定制框架运行测试套件的方式。与一个TestRunner对象,您可以:

例如,使用测试套件,套件,以创建一个静默的测试运行器并使用运行的方法TestRunner

跑步者= matlab.unittest.TestRunner.withNoPlugins;结果= runner.run(套);

使用插件进一步定制测试运行程序。例如,您可以重定向输出、确定代码覆盖率或更改测试运行器对警告的响应方式。有关更多信息,请参见向测试运行器添加插件插件类。

另请参阅

|||||

相关的话题