How to pass multiple parameters to tests that share the same setup code in Matlab xUnit?

余生颓废 提交于 2020-01-03 15:54:57

问题


According to "How to Write Tests That Share Common Set-Up Code" is it possible to:

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

But I couldn't make it work with more parameters:

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

When I runtests it says:

Input argument "fc" is undefined.

Why is that? I done something wrong or it is unsupported in the current version of Matlab xUnit? How to circumvent that?

PS: Actually my MATLAB requires each function to have an end. I didn't wrote them here to keep consistency with the manual examples.


回答1:


Just use a struct:

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.




回答2:


The framework only calls your setup function with a single output argument. If you want to pass more information out from your setup function, bundle everything into a struct.

Also, here are the rules for terminating a function with end. (These rules were introduced in MATLAB 7.0 in 2004 and have not changed since then.)

If any function in a file is terminated with an end, then all functions in that file must be terminated with an end.

Nested functions must always be terminated with an end. Therefore, if a file contains a nested function, then all functions in that file must be terminated with an end.

All functions and methods in classdef files must be terminated with an end.



来源:https://stackoverflow.com/questions/1477376/how-to-pass-multiple-parameters-to-tests-that-share-the-same-setup-code-in-matla

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!