【发布时间】:2013-12-02 17:11:16
【问题描述】:
我在自定义类中有一个方法,它只能返回 0、1 或 2 个输出。我用nargoutchk(0, 2) 进行检查。当指定了错误数量的输出参数时,我在单元测试此方法时不知所措。这不起作用:
classdef MyClassTest < matlab.unittest.TestCase
methods (Test)
function testMyMethod(testCase)
verifyError(testCase, @() [x, y, z] = myMethod(5), 'MATLAB:nargoutchk:tooManyOutputs')
end
end
methods
function varargout = myMethod(a)
nargoutchk(0, 2)
end
end
end
因为 MATLAB 无法在匿名函数内执行赋值。这也不起作用:
classdef MyClassTest < matlab.unittest.TestCase
methods (Test)
function testMyMethod(testCase)
try
[x, y, z] = myMethod(5);
catch ex
verifyError(testCase, @() rethrow(ex), 'MATLAB:nargoutchk:tooManyOutputs')
end
end
end
methods
function varargout = myMethod(a)
nargoutchk(0, 2)
end
end
end
因为rethrow 在匿名函数内无法识别(因为它不在catch 块的直接范围内)。
是否有任何解决方法,或者在 MATLAB 中是不可能的?
【问题讨论】:
标签: matlab unit-testing