如何在Matlab xUnit中将多个参数传递给共享相同设置代码的测试?

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要求每个函数都有一个结束。我没有在这里写它们,以保持与手册示例的一致性。

2个回答

7

该框架只会使用单个输出参数调用您的设置函数。如果您想从设置函数中传递更多信息,请将所有内容捆绑到一个结构体中。

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

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

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

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


1
感谢您的解释 =) - Jader Dias

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);

etc.


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接