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

时间:2009-09-25 13:47:14

标签: unit-testing matlab xunit

根据“How to Write Tests That Share Common Set-Up Code”可以:

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 个答案:

答案 0 :(得分:7)

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

此外,以下是终止函数的规则。 (这些规则是在2004年的MATLAB 7.0中引入的,从那以后没有改变。)

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

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

classdef文件中的所有函数和方法必须以结尾终止。

答案 1 :(得分: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);