主要内容

runInParallel

类:matlab.unittest.TestRunner
包:matlab.unittest

运行中的所有测试TestSuite并行数组

描述

例子

结果= runInParallel (跑步者套件将指定的测试套件划分为组,并使用指定的测试运行程序在当前并行池上运行每个组。然后,该方法以数组的形式返回结果TestResult对象。

当测试并行运行时,测试套件部分在MATLAB上独立运行®工人。例如,如果您的测试类有TestClassSetup方法时,该方法在每个工作者上本地运行。工人们在相应的地方使用这些信息TestSuite元素来运行测试。每一个TestSuite元素向工作程序提供关于测试方法、测试类和为suite元素运行的共享测试fixture。

请注意

runInParallel方法需要并行计算工具箱™。测试框架可能会改变组的顺序和数量,或者在每个组中包含哪些测试。

输入参数

全部展开

平行测试组的测试运行器,指定为matlab.unittest.TestRunner实例。

在并行运行测试之前,请考虑您的测试运行器配置。自runInParallel方法在不同的工作器(一些插件)上运行不同的测试组,例如StopOnFailuresPlugin,不适合并行化。测试框架支持与自定义插件并行运行测试,前提是金宝app插件的子类为可平行的接口。

要并行运行的测试集,指定为matlab.unittest.Test数组中。

例子

全部展开

在当前工作文件夹中的文件中创建以下参数化测试。

classdefTestRand < matlab.unittest.TestCase属性(TestParameter) dim1 = createdimensions;dim2 = createDimensionSizes;dim3 = createDimensionSizes;类型= {“单一”“双”};结束方法(测试)函数teststrepeatable (testCase,dim1,dim2,dim3) state = rng;firstRun =兰德(dim1 dim2 dim3);rng(state) secondRun = rand(dim1,dim2,dim3); / /运行状态testCase.verifyEqual (firstRun secondRun);结束函数testClass (testCase dim1、dim2类型)testCase.verifyClass(兰德(dim1、dim2类型),类型)结束结束结束函数大小= createDimensionSizes%创建最大为100的对数间距大小大小= num2cell(圆(logspace(0、2、10)));结束

在命令提示符处,创建一个套件TestRand.m以及在命令窗口中显示文本的测试运行程序。

套件= matlab.unittest.TestSuite.fromClass (? TestRand);跑步者= matlab.unittest.TestRunner.withTextOutput ();

套件包含1200个测试元素。

并行运行测试套件。

结果= runInParallel(跑步、套房)
将测试分成12组,在4个工人身上运行。---------------- 完成组2  ---------------- 运行TestRand  .......... .......... .......... .......... .......... .......... .......... .......... .......... .......... .........完成TestRand  __________ ---------------- 完成集团4  ---------------- 运行TestRand  .......... .......... .......... .......... .......... .......... .......... .......... .......... .......... .....完成TestRand  __________ ---------------- 完成3组  ---------------- 运行TestRand  .......... .......... .......... .......... .......... .......... .......... .......... .......... .......... .......完成TestRand  __________ ---------------- 完成组1  ---------------- 运行TestRand  .......... .......... .......... .......... .......... .......... .......... .......... .......... .......... .......... ..完成TestRand  __________ ---------------- 完成集团7  ---------------- 运行TestRand  .......... .......... .......... .......... .......... .......... .......... .......... .......... .........完成TestRand  __________ ---------------- 完成集团5  ---------------- 运行TestRand  .......... .......... .......... .......... .......... .......... .......... .......... .......... .......... ...完成TestRand  __________ ---------------- 完成集团6  ---------------- 运行TestRand  .......... .......... .......... .......... .......... .......... .......... .......... .......... .......... .完成TestRand  __________ ---------------- 完成集团8  ---------------- 运行TestRand  .......... .......... .......... .......... .......... .......... .......... .......... .......... .......完成TestRand  __________ ----------------- 完成集团11  ----------------- 运行TestRand  .......... .......... .......... .......... .......... .......... .......... .......... .......... . Done TestRand __________ ----------------- Finished Group 12 ----------------- Running TestRand .......... .......... .......... .......... .......... .......... .......... .......... ........ Done TestRand __________ ----------------- Finished Group 10 ----------------- Running TestRand .......... .......... .......... .......... .......... .......... .......... .......... .......... ... Done TestRand __________ ---------------- Finished Group 9 ---------------- Running TestRand .......... .......... .......... .......... .......... .......... .......... .......... .......... ..... Done TestRand __________ result = 1200x1 TestResult array with properties: Name Passed Failed Incomplete Duration Details Totals: 1200 Passed, 0 Failed, 0 Incomplete. 11.4023 seconds testing time.

提示

  • 选择并行运行的测试套件时,请考虑可能的资源争用。例如,如果您的测试装置访问全局资源,例如同一网络上的数据库或共享文件,并行会话可能会彼此冲突。在这种情况下,可以考虑使用预构建的共享测试装置。

  • 从R2020b开始,您可以创建支持并行运行测试的独立应用程序(需要金宝appMATLAB编译器™和并行计算工具箱)。使用这个指令% #函数并行。池在你的代码中MATLAB编译器可以定位并打包并行运行测试所需的所有组件。有关更多信息,请参见编写MATLAB单元测试

  • 从R2021a开始,您可以在基于线程的池(需要并行计算工具箱)上运行测试,方法是启动线程工作者的并行池,然后调用runInParallel方法。

    要运行的测试runInParallel在基于线程的池中会受到以下限制:

介绍了R2015a