扩展基于脚本的测试
通常,使用基于脚本的测试,您可以创建测试文件并将文件名传递到 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函数或withDefaultPlugins静态方法创建的默认测试运行器运行测试。使用
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