runInParallel

Класс: matlab.unittest.TestRunner
Пакет: matlab.unittest

Запустите все тесты в TestSuite массив параллельно

Описание

пример

result = runInParallel(runner,suite) запускает все тесты в TestSuite массив параллельно и возвращает результаты в TestResult объект. runInParallel метод делит suite в отдельные группы и использование runner запускать каждую группу на текущем параллельном пуле.

Примечание

runInParallel метод требует Parallel Computing Toolbox™. Среда тестирования может варьироваться порядок и количество групп или который тестирует его, включает в каждую группу.

Когда вы выберете тестовый набор, чтобы запуститься параллельно, рассмотрите возможную конкуренцию ресурса. Например, если ваши глобальные ресурсы доступа к испытательным стендам, такие как совместно используемый файл в той же сети, параллельные сеансы могли конфликтовать друг с другом. В таких случаях рассмотрите использование предварительно созданного разделяемого испытательного стенда.

Входные параметры

развернуть все

Исполнитель тестов для параллельных тестовых групп в виде matlab.unittest.TestRunner экземпляр.

Рассмотрите свою настройку исполнителя тестов прежде, чем запустить тесты параллельно. Начиная с runInParallel метод запускает отдельные группы тестов на различных рабочих, некоторых плагинах, таких как StopOnFailuresPlugin, не хорошо подходят для распараллеливания. Поддержки среды тестирования, запускающие тесты параллельно с пользовательским плагином, при условии, что плагин разделяет на подклассы Parallelizable интерфейс.

Набор тестов, чтобы запуститься параллельно в виде matlab.unittest.Test массив.

Примеры

развернуть все

Создайте следующий параметрированный тест в файле в вашей текущей рабочей папке.

classdef TestRand < matlab.unittest.TestCase    
    properties (TestParameter)
        dim1 = createDimensionSizes;
        dim2 = createDimensionSizes;
        dim3 = createDimensionSizes;
        type = {'single','double'};
    end
    
    methods (Test)
        function testRepeatable(testCase,dim1,dim2,dim3)
            state = rng;
            firstRun = rand(dim1,dim2,dim3);
            rng(state)
            secondRun = rand(dim1,dim2,dim3);
            testCase.verifyEqual(firstRun,secondRun);
        end
        function testClass(testCase,dim1,dim2,type)
            testCase.verifyClass(rand(dim1,dim2,type),type)
        end
    end
end
 
function sizes = createDimensionSizes
% Create logarithmically spaced sizes up to 100
sizes = num2cell(round(logspace(0,2,10)));
end

В командной строке создайте набор из TestRand.m и исполнитель тестов, который отображает текст в Командном окне.

suite = matlab.unittest.TestSuite.fromClass(?TestRand);
runner = matlab.unittest.TestRunner.withTextOutput();

Набор содержит 1 200 тестовых элементов.

Запустите тестовый набор параллельно.

result = runInParallel(runner,suite)
Split tests into 12 groups and running them on 4 workers.
----------------
Finished Group 2
----------------
Running TestRand
..........
..........
..........
..........
..........
..........
..........
..........
..........
..........
.........
Done TestRand
__________


----------------
Finished Group 4
----------------
Running TestRand
..........
..........
..........
..........
..........
..........
..........
..........
..........
..........
.....
Done TestRand
__________


----------------
Finished Group 3
----------------
Running TestRand
..........
..........
..........
..........
..........
..........
..........
..........
..........
..........
.......
Done TestRand
__________


----------------
Finished Group 1
----------------
Running TestRand
..........
..........
..........
..........
..........
..........
..........
..........
..........
..........
..........
..
Done TestRand
__________


----------------
Finished Group 7
----------------
Running TestRand
..........
..........
..........
..........
..........
..........
..........
..........
..........
.........
Done TestRand
__________


----------------
Finished Group 5
----------------
Running TestRand
..........
..........
..........
..........
..........
..........
..........
..........
..........
..........
...
Done TestRand
__________


----------------
Finished Group 6
----------------
Running TestRand
..........
..........
..........
..........
..........
..........
..........
..........
..........
..........
.
Done TestRand
__________


----------------
Finished Group 8
----------------
Running TestRand
..........
..........
..........
..........
..........
..........
..........
..........
..........
.......
Done TestRand
__________


-----------------
Finished Group 11
-----------------
Running 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, можно создать автономные приложения, которые поддерживают запускающие тесты параллельно (требует MATLAB® Compiler™ и Parallel Computing Toolbox). Используйте направляющий %#function parallel.Pool в вашем коде так, чтобы MATLAB Compiler мог расположиться и пакет все компоненты, требуемые для того, чтобы запустить тесты параллельно. Для получения дополнительной информации смотрите Компиляцию Модульные тесты MATLAB.

Представленный в R2015a