我正在尝试创建一个参数化的 Matlab 单元测试,其中TestParameter
属性由某些代码“动态”生成(例如,使用for
循环)。
作为一个简化的例子,假设我的代码是
classdef partest < matlab.unittest.TestCase
properties (TestParameter)
level = struct('level1', 1, 'level2', 2, 'level3', 3, 'level4', 4)
end
methods (Test)
function testModeling(testCase, level)
fprintf('Testing level %d\n', level);
end
end
end
但在我的真实代码中,我有 100 个级别。我试图把它放在一个单独的方法中,比如
classdef partest < matlab.unittest.TestCase
methods (Static)
function level = getLevel()
for i=1:100
level.(sprintf('Level%d', i)) = i;
end
end
end
properties (TestParameter)
level = partest.getLevel()
end
methods (Test)
function testModeling(testCase, level)
fprintf('Testing level %d\n', level);
end
end
end
但这不起作用;我收到错误(Matlab 2014b):
>> runtests partest
Error using matlab.unittest.TestSuite.fromFile (line 163)
The class partest has no property or method named 'getLevel'.
我可以将getLevel()
函数移动到另一个文件,但我想将它保存在一个文件中。