我在使用MATLAB单元测试框架方面相当新。我不知道如何在那里调试未捕获的错误。我正在寻找一种类似于在MATLAB脚本中使用dbstop if error
功能的方法,这种方法只会停留在脚本中的c=(1:5)+randn(3)
行。
我的问题是如何在以下方面做到这一点......
classdef sample_Test < matlab.unittest.TestCase
methods(Test)
function sampleAATest(testCase)
a=1;
b=3;
c=(1:5)+randn(3)
end
end
end
任何帮助都表示赞赏,因为此功能似乎在复杂的测试中非常有用
答案 0 :(得分:3)
虽然这不会停留在相关行,但StopOnFailuresPlugin可以帮助您为其他测试失败类型执行此操作:
>> import matlab.unittest.*
>> import matlab.unittest.plugins.*
>>
>> suite = TestSuite.fromClass(?sample_Test)
>> runner = TestRunner.withTextOutput;
>> runner.addPlugin(StopOnFailuresPlugin);
>> runner.run(suite)
对于未捕获的异常,它只会在您退出测试方法后捕获该值,根据您的需要,这可能对您没有用。
修改强>
对于更新的版本,您可以使用runtests的'Debug'
选项轻松完成此操作:
runtests('sample_Test', 'Debug', true)
<强> /修改
另一种解决错误的方法是发出
>> dbstop if all error
这将停在正确的位置,可能适用于此情况,但也会在所有捕获的错误处停止。有时这可能是很多错误,可能需要一段时间来解决您感兴趣的错误。
最后,Hoki在评论中提出的建议很好。它可能不适合您,因为clear classes
也会清除断点。
希望有所帮助!