Cómo pasar varios parámetros a pruebas que comparten el mismo código de configuración en Matlab xUnit?

StackOverflow https://stackoverflow.com/questions/1477376

  •  16-09-2019
  •  | 
  •  

Pregunta

De acuerdo con " Cómo escribir pruebas que comparten Común Set-Up Código "¿es posible:

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

Pero no podía hacer que funcione con más parámetros:

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

Cuando runtests que dice:

  
    

argumento de entrada "fc" no está definido.

  

¿Por qué? He hecho algo mal o que no está soportado en la versión actual de Matlab xUnit? Cómo eludir eso?

PS: En realidad mi Matlab requiere cada función que tener un fin. Yo no les escribí aquí para mantener la coherencia con los ejemplos del manual.

¿Fue útil?

Solución

Sólo tiene que utilizar una estructura:

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.

Otros consejos

El marco sólo se llama a su función de configuración con un único argumento de salida. Si desea pasar más información fuera de su función de configuración, agrupar todo en una estructura.

Además, aquí están las reglas para la terminación de una función con extremo. (Estos se introdujeron reglas en MATLAB 7,0 en 2004 y no han cambiado desde entonces.)

Si alguna función en un archivo se termina con un final, entonces todas las funciones de ese archivo debe terminar con un final.

funciones anidadas siempre deben terminar con un extremo. Por lo tanto, si un archivo contiene una función anidada, a continuación, todas las funciones en ese archivo se deben terminar con un extremo.

Todas las funciones y métodos en los archivos classdef deben terminar con un extremo.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top