4

「共通のセットアップ コードを共有するテストの作成方法」によると、次のことが可能です。

function test_suite = testSetupExample
 initTestSuite;

function fh = setup
 fh = figure;

function teardown(fh)
 delete(fh);

function testColormapColumns(fh)
 assertEqual(size(get(fh, 'Colormap'), 2), 3);

function testPointer(fh)
 assertEqual(get(fh, 'Pointer'), 'arrow');

しかし、より多くのパラメーターを使用して機能させることはできませんでした:

function test_suite = testSetupExample
 initTestSuite;

function [fh,fc] = setup
 fh = figure;
 fc = 2;
end

function teardown(fh,fc)
 delete(fh);

function testColormapColumns(fh,fc)
 assertEqual(size(get(fh, 'Colormap'), fc), 3);

function testPointer(fh,fc)
 assertEqual(get(fh, 'Pointer'), 'arrow');

テストを実行すると、次のように表示されます。

入力引数 "fc" は定義されていません。

何故ですか?何か間違ったことをしましたか、それとも現在のバージョンの Matlab xUnit ではサポートされていませんか? それを回避する方法は?

PS: 実際、私の MATLAB では、各関数に終了が必要です。マニュアルの例との一貫性を保つために、ここには書きませんでした。

4

2 に答える 2

7

フレームワークは、単一の出力引数を使用して setup 関数のみを呼び出します。setup 関数からさらに多くの情報を渡したい場合は、すべてを構造体にまとめます。

また、end で関数を終了するためのルールは次のとおりです。(これらの規則は 2004 年に MATLAB 7.0 で導入され、それ以来変更されていません。)

ファイル内のいずれかの関数が end で終了する場合、そのファイル内のすべての関数は end で終了する必要があります。

ネストされた関数は、常に end で終了する必要があります。したがって、ファイルにネストされた関数が含まれている場合、そのファイル内のすべての関数は末尾で終了する必要があります。

classdef ファイル内のすべての関数とメソッドは、末尾で終了する必要があります。

于 2009-09-25T18:40:52.463 に答える
4

構造体を使用するだけです:

function test_suite = testSetupExample
 initTestSuite;

function [fh] = setup
 fh.one = figure;
 fh.two = 2;
end

function teardown(fh)
 delete(fh.one);


function testColormapColumns(fh)
 assertEqual(size(get(fh.one, 'Colormap'), fc.two), 3);

于 2009-09-27T15:23:39.370 に答える