MatLab 2015A和2015B之间的不同单元测试行为

时间:2015-10-26 11:50:26

标签: matlab unit-testing

在名为CEmpty<的单元测试类中考虑以下单元测试方法。 matlab.unittest.TestCase:

function test_must_fail (testCase)
    testCase.verifyLessThan(2,1, 'test_must_fail() failed') ;
end

预期结果:

...
    Actual double:
             2
    Maximum Value (Exclusive):
             1
...

在MatLab R2015A中,我可以通过两种方式得到这个结果:

% first way:
tester = TEmpty() ;
tester.test_must_fail() ;

% second way
run (TEmpty, 'test_must_fail') ;

无论是谁,在R2015B中,只有第二种方式导致输出,而第一种方式不显示任何东西。此外,尝试将结果保存到变量:

tester = TEmpty() ;
test_result = tester.test_must_fail() ;

在2015A中运行正常,但会导致错误(“输出参数太多”。 )在R2015B。

在我开始更改代码之前: 1.你得到类似的结果,还是只有我(和我的同事)安装? 2.如果这是预期的行为,是否有一些简单的旁路(例如将某些配置设置为2015A模式)?

1 个答案:

答案 0 :(得分:3)

这是一种预期的行为,是由于人们使用纯粹用于交互式使用的类的混淆而显示的,这些类显示看起来像失败但实际上不会在返回的TestResult上产生失败。

以下是相关的release note

现在,您可以以更安全的方式执行此操作,通过使用新形式的TestCase.forInteractiveuse确保仅对交互式调试用例执行此操作。尝试:

tester = matlab.unittest.TestCase.forInteractiveUse(?TEmpty);
tester.test_must_fail();