Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/matlab/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Unit testing Matlab xUnit框架测试套件设置_Unit Testing_Matlab_Xunit - Fatal编程技术网

Unit testing Matlab xUnit框架测试套件设置

Unit testing Matlab xUnit框架测试套件设置,unit-testing,matlab,xunit,Unit Testing,Matlab,Xunit,如何在每个测试套件中初始化变量一次,使它们在每个测试中都可见?例如,可以加载一些文件,每个测试都需要这些文件 根据MatlabxUnit文档:您可以1)从TestCase继承,或者2)使用子函数。使用子功能的示例如下所示。您只能传递一个变量,因此必须在结构中加载它们,如下所示。您可以将其他子函数放在末尾,但请确保以“setup”、“test”或“teardown”开头或结尾它们的名称 function test_suite = testjkcmInputParser initTe

如何在每个测试套件中初始化变量一次,使它们在每个测试中都可见?例如,可以加载一些文件,每个测试都需要这些文件

根据MatlabxUnit文档:您可以1)从TestCase继承,或者2)使用子函数。使用子功能的示例如下所示。您只能传递一个变量,因此必须在结构中加载它们,如下所示。您可以将其他子函数放在末尾,但请确保以“setup”、“test”或“teardown”开头或结尾它们的名称

function test_suite = testjkcmInputParser    
    initTestSuite;

    function d = setup
    d.file='garbagelog.log';
    d.fid = fopen(d.file, 'w');
    d.o = jkcmInputParser(d.fid);

    function teardown(d)
    delete(d.o);
    fclose(d.fid);
    delete(d.file);

    function testConstructorNoInput(d)
    %constructor without fid
    delete(d.o);
    d.o = jkcmInputParser();    
    assertEqual(isa(d.o,'jkcmInputParser'), true, 'not a jkcmInputParser');
    assertEqual(isa(d.o,'inputParser'), true, 'not an inputParser');

    function testConstructorWithInput(d)
    %constructor with fid    
    assertEqual(isa(d.o,'jkcmInputParser'), true, 'not a jkcmInputParser');
    assertEqual(isa(d.o,'inputParser'), true, 'not an inputParser');
    initializejkcmParser(d.o);      
    s = d.o.printHelp();    
    assertEqual(s, correctPrintHelp(), 'output of printHelp does not match expected.');

    function outP = initializejkcmParser(o)
    %setup jkcmInputParser
    o.addRequired('val1_noComment', @isnumeric);
    o.addRequired('val2', @isnumeric, 'comment');    
    o.addOptional('val3_noComment',3, @isnumeric);
    o.addOptional('val4',15, @isnumeric, 'another great comment!');    
    o.addParamValue('val5_noComment', 45, @isnumeric);
    o.addParamValue('val6', 45, @isnumeric, 'This is the greatest comment');
    outP = o;

    function outP = correctPrintHelp()
    outP = sprintf(...  
       ['val1_noComment: Req : \n',...
        'val2: Req : comment\n',...
        'val3_noComment: Opt : \n',...
        'val4: Opt : another great comment!\n',...
        'val5_noComment: Param : \n',...
        'val6: Param : This is the greatest comment\n']);      

在R2013a中,MATLAB包含一个功能齐全的测试框架。它包括的特性之一是能够为整个类定义设置/拆卸代码


每次测试前都会调用setup函数。我需要一种在所有测试之前加载一次并在所有测试之后清理的方法。全局变量可以工作吗?如果不是的话,我想您将不得不使用类框架并从testSuite继承并进行一些更改。也许一个
持久的
变量会比一个
全局的
更好。