matlab.unittest.plugins.ToUniqueFile class

Пакет: matlab.unittest.plugins
Суперклассы: matlab.unittest.plugins.OutputStream

Выходной поток для записи текста, выводимого в уникальный файл

Описание

The ToUniqueFile создает поток выхода, который записывает текст, выводимый в уникальный, UTF-8 закодированный файл. Каждый раз, когда текст печатается в этом потоке, выходной поток открывает файл, добавляет текст и закрывает файл. Каждый образец ToUniqueFile создает файл с уникальным именем. Этот выходной поток полезен для параллельного выполнения тестов при перенаправлении выхода в файл.

MATLAB® создает уникальное имя файла для потока выхода, но можно задать префикс и расширение файла.

Конструкция

matlab.unittest.plugins.ToUniqueFile(folder) создает OutputStream который записывает вывод текста в уникальный файл в указанной папке.

matlab.unittest.plugins.ToUniqueFile(folder,Name,Value) создает уникальный файл с дополнительными опциями, заданными одним или несколькими Name,Value аргументы в виде пар. Можно задать несколько аргументы пары "имя-значение" в любом порядке как Name1,Value1,...,NameN,ValueN.

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

расширить все

Имя существующей папки, заданное как вектор символов или строковый скаляр. Выходной поток записывает в файл в folder.

Пример: 'myOutput'

Пример: pwd

Аргументы в виде пар имя-значение

Задайте необязательные разделенные разделенными запятой парами Name,Value аргументы. Name - имя аргумента и Value - соответствующее значение. Name должны находиться внутри кавычек. Можно задать несколько аргументов в виде пар имен и значений в любом порядке Name1,Value1,...,NameN,ValueN.

Пример: matlab.unittest.plugins.ToFile(pwd,'WithPrefix','myOutput_') создает поток выхода, который записывает в файл в текущей рабочей папке, который начинается с 'myOutput_'.

Префикс для имени файла, заданный как вектор символов или строковый скаляр.

Пример: 'outputA _'

Расширение для имени файла, заданное как вектор символов или строковый скаляр. По умолчанию имя файла имеет расширение '.txt'. Расширения должны начинаться с точки.

Пример: '.xml'

Свойства

расширить все

Полное имя файла для перенаправления текста, выводимого из плагина, возвращаемое как строковый скаляр.

Копировать семантику

Указатель. Чтобы узнать, как классы handle влияют на операции копирования, см. раздел «Копирование объектов».

Примеры

свернуть все

Создайте выход TAP для набора тестов, которые вы запускаете параллельно. Чтобы избежать перезаписи файла TAP в среде, направьте выход из каждой группы тестов в уникальный файл. Чтобы запустить тесты параллельно, этот пример требует Parallel Computing Toolbox™.

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

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 logarithmicly spaced sizes up to 100
    sizes = num2cell(round(logspace(0,2,10)));
end

В командной строке создайте папку для выходных файлов.

mkdir myOutput

Создайте набор из TestRand.m и исполнитель тестов с терсовым выходом. Этот набор содержит 1200 тестовых элементов.

suite = matlab.unittest.TestSuite.fromClass(?TestRand);
runner = matlab.unittest.TestRunner.withTextOutput('OutputDetail',1);

Создайте образец потока, который записывает в уникальный файл в myOutput папка. Затем создайте TAPPlugin и направляйте выход в поток. Каждый созданный файл начинается с 'myTapFile_' и заканчивается '.tap' расширение.

import matlab.unittest.plugins.ToUniqueFile;
import matlab.unittest.plugins.TAPPlugin;

stream = ToUniqueFile('myOutput','WithPrefix','myTapFile_','WithExtension','.tap');
plugin = TAPPlugin.producingOriginalFormat(stream);

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

runner.addPlugin(plugin);
result = runner.runInParallel(suite);
Split tests into 18 groups and running them on 6 workers.
----------------
Finished Group 5
----------------
..................................................
.......................

----------------
Finished Group 6
----------------
..................................................
.....................

----------------
Finished Group 4
----------------
..................................................
........................

----------------
Finished Group 1
----------------
..................................................
............................

----------------
Finished Group 3
----------------
..................................................
..........................

----------------
Finished Group 2
----------------
..................................................
...........................

----------------
Finished Group 7
----------------
..................................................
....................

----------------
Finished Group 8
----------------
..................................................
...................

-----------------
Finished Group 11
-----------------
..................................................
...............

----------------
Finished Group 9
----------------
..................................................
.................

-----------------
Finished Group 12
-----------------
..................................................
.............

-----------------
Finished Group 10
-----------------
..................................................
................

-----------------
Finished Group 16
-----------------
..................................................
........

-----------------
Finished Group 18
-----------------
..................................................
....

-----------------
Finished Group 17
-----------------
..................................................
.......

-----------------
Finished Group 13
-----------------
..................................................
............

-----------------
Finished Group 14
-----------------
..................................................
...........

-----------------
Finished Group 15
-----------------
..................................................
.........

Просмотрите выходные файлы в myOutput папка. Поскольку MATLAB запускал тесты в 18 группах, среда создала 18 образцы ToUniqueFile выходной поток. Существует 18 связанных выходных файлов.

dir myOutput
.                                                   
..                                                  
myTapFile_22dc996d-e1e9-44e2-af3a-e8e9c68c6941.tap  
myTapFile_2de69eb4-591f-4456-9890-31626e57792f.tap  
myTapFile_3e88b1fb-5679-4489-b9c9-a2b22ac76cb1.tap  
myTapFile_4b660dae-9e33-4e89-bd1b-27c874749476.tap  
myTapFile_56d584a8-2bf2-4677-ad25-5f268628c179.tap  
myTapFile_632c3723-c300-40a6-8ffa-a7dbd0d07d65.tap  
myTapFile_66276292-5062-489a-9219-cc2664f48fb8.tap  
myTapFile_78d69693-720a-4a14-86b3-de687b1ddf91.tap  
myTapFile_7df3915c-60de-4c7f-8968-b5260d4c2933.tap  
myTapFile_827a6d46-54c6-4ee3-bfbb-0d46d4024fcf.tap  
myTapFile_97af3692-7b4a-4f80-a81a-96fc0f86beed.tap  
myTapFile_9cb0cdb1-4f30-40a0-8f5f-51da8af7bb86.tap  
myTapFile_b8820e56-7c92-41eb-b040-94f55399766b.tap  
myTapFile_c1bfd286-7fa4-4365-b456-4babf2a995da.tap  
myTapFile_c53c2906-14a7-41eb-a87c-d1fd727e6d9e.tap  
myTapFile_decbc713-84c0-4139-b3e4-d2b8c2e273bf.tap  
myTapFile_e1687147-f8a7-4f6d-aea0-a3e885246dd6.tap  
myTapFile_f78c98a7-6c14-4981-ae03-fc8ffbeddaf8.tap  
Введенный в R2018a