编写插件以扩展 TestRunner
自定义插件概述
TestRunnerPlugin 方法有四个级别:测试会话、测试套件、测试类和测试。在每个级别,您都可以实现方法来扩展测试运行。此外,您可以在测试套件、测试类和测试级别实现方法,以扩展测试或测试脚手架的创建、设置和拆解。
在测试套件、测试类和测试级别,reportFinalizedResult 方法使用测试运行器报告最终测试结果。当没有其余的测试内容可以修改测试结果时,表示测试结果已最终确定。测试运行器会确定它是否在每个级别都调用 reportFinalizedResult 方法。在测试会话级别,reportFinalizedSuite 方法使用测试运行器在测试套件最终确定后报告测试结果。
测试运行器运行不同方法,如下图所示。

创建方法是唯一包含输出参量的 TestRunnerPlugin 方法集。通常,可扩展创建方法以在对应级别侦听源自测试内容的各种事件。因为 TestCase 和 Fixture 实例均继承自 handle 类,所以可以使用 addlistener 方法添加侦听程序。设置、运行和拆解测试内容的方法可扩展测试运行器评估测试内容的方式。
扩展测试会话级别插件方法
测试会话级别的 TestRunnerPlugin 方法可扩展传递给测试运行器的测试套件的运行和报告。下列方法属于 runSession 方法的范围。
此级别的运行方法 runTestSuite 可扩展测试框架传递给测试运行器的整个 TestSuite 数组的一部分的运行。reportFinalizedSuite 方法可扩展 runTestSuite 最终确定的测试套件的报告。
扩展测试套件级别插件方法
测试套件级别的 TestRunnerPlugin 方法扩展共享测试脚手架的创建、设置、运行和拆解。下列方法属于 runTestSuite 方法的范围。
| 方法类型 | 测试级别处于 runTestSuite 范围内 |
|---|---|
| 创建方法 | createSharedTestFixture |
| 设置方法 | setupSharedTestFixture |
| 运行方法 | runTestClass |
| 拆解方法 | teardownSharedTestFixture |
在此级别,createSharedTestFixture 方法是唯一带输出参量的插件方法。它为测试类所需的每个共享脚手架返回 Fixture 实例。这些 Fixture 实例可通过 TestCase 的 getSharedTestFixtures 方法提供给测试。
此级别的运行方法 runTestClass 扩展属于同一测试类的测试或同一基于函数的测试的运行,并纳入为测试类级别插件方法描述的功能。
扩展测试类级别插件方法
测试类级别的 TestRunnerPlugin 方法可扩展属于同一测试类或同一基于函数的测试的测试套件元素的创建、设置、运行和拆解。这些方法适用于测试运行器运行的整个 TestSuite 数组的一部分。
| 方法类型 | 测试级别处于 runTestClass 范围内 |
|---|---|
| 创建方法 | createTestClassInstance |
| 设置方法 | setupTestClass |
| 运行方法 | runTest |
| 拆解方法 | teardownTestClass |
在此级别,createTestClassInstance 方法是唯一带输出参量的插件方法。它返回在类级别创建的 TestCase 实例。对于每个类,测试框架向任何带有 TestClassSetup 或 TestClassTeardown 属性的方法传递该实例。
如果某测试类设置包含带 ClassSetupParameter 特性的属性,则它已被参数化。本例中,测试框架按照类设置参数化的规定评估 setupTestClass 和 teardownTestClass 方法很多次。
此级别的运行方法 runTest 可扩展单个 TestSuite 元素的运行,并纳入为测试级别插件方法描述的功能。
测试框架在 runTestClass 方法范围内对测试类级别的方法进行计算。如果 TestClassSetup 代码成功完成,则它为 TestSuite 数组中的每个元素调用 runTest 方法一次。每个 TestClassSetup 参数化调用创建、设置和拆解方法一次。
扩展测试级别插件方法
测试级别的 TestRunnerPlugin 方法可扩展单个测试套件元素的创建、设置、运行和拆解。单个 Test 元素包括一个 Test 方法,如果测试被参数化,则包括测试参数化的一个实例。
| 方法类型 | 测试级别处于 runTest 范围内 |
|---|---|
| 创建方法 | createTestMethodInstance |
| 设置方法 | setupTestMethod |
| 运行方法 | runTestMethod |
| 拆解方法 | teardownTestMethod |
在此级别,createTestMethodInstance 方法是唯一带输出参量的插件方法。它返回为每个 Test 元素创建的 TestCase 实例。测试框架将每个实例传入相应的 Test 方法,以及任何带有 TestMethodSetup 或 TestMethodTeardown 属性的方法。
测试框架在 runTest 方法范围内对测试级别的方法进行计算。框架完成所有 TestMethodSetup 工作后,它为每个 Test 元素调用此级别的插件方法一次。
另请参阅
函数
类
matlab.unittest.plugins.TestRunnerPlugin|matlab.unittest.TestRunner|matlab.unittest.TestCase|matlab.unittest.fixtures.Fixture|matlab.unittest.TestSuite|matlab.unittest.plugins.Parallelizable|matlab.automation.streams.OutputStream