各テストで変数が表示されるように、変数をテスト スイートごとに 1 回初期化する方法は? たとえば、各テストに必要ないくつかのファイルをロードすることができます。
1034 次
2 に答える
1
R2013a では、MATLAB にフル機能のテスト フレームワークが含まれています。含まれる機能の 1 つは、クラス全体のセットアップ/ティアダウン コードを定義する機能です。
http://www.mathworks.com/help/matlab/matlab-unit-test-framework.html
于 2013-07-09T21:37:06.360 に答える
1
Matlab xUnit のドキュメントによると、1) TestCase から継承するか、2) サブ関数を使用することができます。サブ関数の使用例を以下に示します。渡すことができる変数は 1 つだけなので、以下に示すようにそれらを構造体にロードする必要があります。追加のサブ機能を最後に置くことができますが、それらの名前の最初または最後に「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']);
于 2012-03-10T22:48:39.860 に答える