本页对应的英文页面已更新,但尚未翻译。 若要查看最新内容,请点击此处访问英文页面。

matlab.unittest.plugins.ToUniqueFile 类

包: matlab.unittest.plugins
超类: matlab.unittest.plugins.OutputStream

将文本输出写入唯一文件的输出流

说明

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'

属性

全部展开

从插件重定向文本输出所指向的文件的完整名称,以字符串标量形式返回。

复制语义

句柄。要了解句柄类如何影响复制操作,请参阅复制对象

示例

全部折叠

为并行运行的一套测试生成 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 个组来运行测试,因此框架创建 ToUniqueFile 输出流的 18 个实例。有 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 中推出