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 函数中传递更多信息,请将所有内容捆绑到一个结构中。

此外,这里是用 end 终止函数的规则。(这些规则是 2004 年在 MATLAB 7.0 中引入的,从那时起就没有改变过。)

如果文件中的任何函数以 end 结尾,则该文件中的所有函数都必须以 end 结尾。

嵌套函数必须始终以 end 结束。因此,如果文件包含嵌套函数,则该文件中的所有函数都必须以 end 结束。

classdef 文件中的所有函数和方法都必须以 end 结束。

于 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 回答