使用unittest

时间:2015-08-06 21:14:33

标签: matlab unit-testing debugging

我在使用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

任何帮助都表示赞赏,因为此功能似乎在复杂的测试中非常有用

1 个答案:

答案 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也会清除断点。

希望有所帮助!