Come passare più parametri a test che condividono lo stesso codice di impostazione in Matlab xUnit?

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

  •  16-09-2019
  •  | 
  •  

Domanda

Secondo " Come scrivere test che azione ordinaria Set-Up Codice " è possibile:

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

Ma non potevo farlo funzionare con più parametri:

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

Quando ho runtests che dice:

  
    

argomento di input "fc" è definito.

  

Perché? Ho fatto qualcosa di sbagliato o che non è supportato nella versione corrente di Matlab xUnit? Come aggirare questo?

PS: In realtà il mio MATLAB richiede che ogni funzione per avere una fine. Non li ho scritto qui per mantenere la coerenza con gli esempi manuali.

È stato utile?

Soluzione

Basta usare una struttura:

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

ecc.

Altri suggerimenti

Il framework chiama solo la vostra funzione di setup con un singolo argomento di uscita. Se si desidera passare ulteriori informazioni dal tuo funzione di impostazione, impacchettare tutto in una struct.

Inoltre, ecco le regole per terminare una funzione con finale. (Queste regole sono state introdotte in MATLAB 7.0 nel 2004 e non sono cambiate da allora.)

Se una qualsiasi funzione in un file termina con un fine, allora tutte le funzioni in quel file devono essere terminati con una fine.

funzioni nidificate deve sempre essere chiuso con un'estremità. Pertanto, se un file contiene una funzione nidificata, quindi tutte le funzioni di tale file deve terminare con un'estremità.

Tutte le funzioni e metodi nei file classdef devono essere terminati con una fine.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top