2009-09-25 61 views
4

據 「How to Write Tests That Share Common Set-Up Code」,纔有可能:如何將多個參數傳遞給在Matlab xUnit中共享相同設置代碼的測試?

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

當我runtests它說:

輸入參數「fc」未定義。

這是爲什麼?我做了一些錯誤的事情,或者在當前版本的Matlab xUnit中不支持?如何規避這種情況? PS:其實我的MATLAB需要每個功能都有一個結束。我沒有在這裏寫下它們以保持與手動示例的一致性。

回答

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

7

該框架只調用您的設置功能與一個單一的輸出參數。如果你想從你的設置函數中傳遞更多的信息,把所有東西都捆綁到一個結構中。

此外,這裏是終止函數的規則。 (這些規則於2004年在MATLAB 7.0中引入,並且自那時以來一直沒有改變。)

如果文件中的任何函數以結束符終止,則該文件中的所有函數都必須以結束符終止。

嵌套函數必須始終以結束方式結束。因此,如果一個文件包含一個嵌套函數,那麼該文件中的所有函數都必須以一個結束符結束。

classdef文件中的所有函數和方法都必須以end結尾。

+1

感謝您的結束說明=) –

相關問題