扩展基于脚本的测试
通常,使用基于脚本的测试,您可以创建测试文件并将文件名传递到 runtests
函数,而无需显式创建 Test
对象套件。如果您创建显式测试套件,则基于脚本的测试中会提供其他功能。这些功能包括选择测试和使用插件自定义测试运行器。有关其他功能,请考虑使用基于函数的单元测试或基于类的单元测试。
测试套件创建
要从基于脚本的测试直接创建测试套件,请使用 testsuite
函数。要更显式地创建测试套件,请使用 TestSuite
的 matlab.unittest.TestSuite.fromFile
方法。然后,您可以使用 run
方法运行这些测试,而不是使用 runtests
函数。例如,如果您在文件 rightTriTolTest.m
中包含基于脚本的测试,则这三种方法等效。
% Implicit test suite result = runtests('rightTriTolTest.m'); % Explicit test suite suite = testsuite('rightTriTolTest.m'); result = run(suite); % Explicit test suite suite = matlab.unittest.TestSuite.fromFile('rightTriTolTest.m'); result = run(suite);
此外,您还可以使用 matlab.unittest.TestSuite.fromFolder
方法,根据指定文件夹中的所有测试文件创建测试套件。如果您知道特定测试在基于脚本的测试文件中的名称,则可以使用 matlab.unittest.TestSuite.fromName
根据该测试创建测试套件。
测试选择
对于显式测试套件,请使用选择器优化您的套件。其中有几个选择器仅适用于基于类的测试,但您可以根据测试名称为您的套件选择测试:
在套件生成方法(例如
matlab.unittest.TestSuite.fromFile
)中使用'Name'
名称-值对组参数。使用一个
selectors
实例和可选的constraints
实例。
在套件生成方法(如 matlab.unittest.TestSuite.fromFile
)中使用这些方法,或使用 selectIf
方法创建套件并对其进行过滤。例如,在此列表中,suite
的四个值等效。
import matlab.unittest.selectors.HasName import matlab.unittest.constraints.ContainsSubstring import matlab.unittest.TestSuite.fromFile f = 'rightTriTolTest.m'; selector = HasName(ContainsSubstring('Triangle')); % fromFile, name-value pair suite = TestSuite.fromFile(f,'Name','*Triangle*') % fromFile, selector suite = TestSuite.fromFile(f,selector) % selectIf, name-value pair fullSuite = TestSuite.fromFile(f); suite = selectIf(fullSuite,'Name','*Triangle*') % selectIf, selector fullSuite = TestSuite.fromFile(f); suite = selectIf(fullSuite,selector)
如果您对选择器或名称-值对组使用其中一个套件创建方法,则测试框架会创建经过过滤的套件。如果您使用 selectIf
方法,则测试框架会创建完整的测试套件,然后对套件进行过滤。对于大型测试套件,此方法可能会影响性能。
以编程方式访问测试诊断
在某些情况下,测试框架使用 DiagnosticsRecordingPlugin
插件来记录对测试结果的诊断。如果您执行以下任一操作,框架将默认使用该插件:
使用
runtests
函数运行测试。使用不带输入的
testrunner
函数运行测试。使用
runperf
函数运行性能测试。使用
TimeExperiment
类的run
方法运行性能测试。
运行测试后,您可以使用 TestResult
对象上 Details
属性中的 DiagnosticRecord
字段访问记录的诊断数据。例如,如果您的测试结果存储在变量 results
中,则 result(2).Details.DiagnosticRecord
包含套件中第二个测试记录的诊断信息。
记录的诊断信息是 DiagnosticRecord
对象。要访问某测试的特定类型测试诊断信息,请使用 DiagnosticRecord
类的 selectFailed
、selectPassed
、selectIncomplete
和 selectLogged
方法。
默认情况下,DiagnosticsRecordingPlugin
插件会记录在 matlab.automation.Verbosity.Terse
详细级别记录的验证失败和事件。有关详细信息,请参阅 DiagnosticsRecordingPlugin
和 DiagnosticRecord
。
测试运行器自定义
使用 TestRunner
对象自定义框架运行测试套件的方式。通过 TestRunner
对象,您可以:
使用
withNoPlugins
方法不在命令行窗口中生成任何输出。使用
runInParallel
方法并行运行测试。使用
addPlugin
方法向测试运行器添加插件。
例如,使用测试套件 suite
创建一个静默测试运行器,并使用 TestRunner
的 run
方法运行测试。
runner = matlab.unittest.TestRunner.withNoPlugins; results = runner.run(suite);
使用插件可进一步自定义测试运行器。例如,您可以重定向输出,确定代码覆盖率,或更改测试运行器响应警告的方式。有关详细信息,请参阅向测试运行器添加插件和 plugins
类。
另请参阅
plugins
| selectors
| matlab.unittest.constraints
| TestRunner
| TestSuite