Main Content

扩展基于脚本的测试

通常,使用基于脚本的测试,您可以创建测试文件并将文件名传递到 runtests 函数,而无需显式创建 Test 对象套件。如果您创建显式测试套件,则基于脚本的测试中会提供其他功能。这些功能包括选择测试和使用插件自定义测试运行程序。有关其他功能,请考虑使用基于函数的单元测试基于类的单元测试

测试套件创建

要从基于脚本的测试直接创建测试套件,请使用 testsuite 函数。要更显式地创建测试套件,请使用 TestSuitematlab.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)中使用这些方法,或使用 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 插件来记录对测试结果的诊断。如果您执行以下任一操作,框架将默认使用该插件:

运行测试后,您可以使用 TestResult 对象上 Details 属性中的 DiagnosticRecord 字段访问记录的诊断数据。例如,如果您的测试结果存储在变量 results 中,则 result(2).Details.DiagnosticRecord 包含套件中第二个测试记录的诊断信息。

记录的诊断信息是 DiagnosticRecord 对象。要访问某测试的特定类型测试诊断信息,请使用 DiagnosticRecord 类的 selectFailedselectPassedselectIncompleteselectLogged 方法。

默认情况下,DiagnosticsRecordingPlugin 插件会记录在 matlab.unittest.Verbosity.Terse 详细级别记录的验证失败和事件。有关详细信息,请参阅 DiagnosticsRecordingPluginDiagnosticRecord

测试运行程序自定义

使用 TestRunner 对象自定义框架运行测试套件的方式。通过 TestRunner 对象,您可以:

  • 使用 withNoPlugins 方法不在命令行窗口中生成任何输出。

  • 使用 runInParallel 方法并行运行测试。

  • 使用 addPlugin 方法向测试运行程序添加插件。

例如,使用测试套件 suite 创建一个静默测试运行程序,并使用 TestRunnerrun 方法运行测试。

runner = matlab.unittest.TestRunner.withNoPlugins;
results = runner.run(suite);

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

另请参阅

| | | |

相关主题