Могу ли я подавить раздражающий стек вызовов Matlab Unit Test Framework для предупреждений? - PullRequest
0 голосов
/ 28 июня 2019

UT-инфраструктура Matlab, похоже, выводит длинный стек внутренних методов самой структуры.Это приводит к раздражающему потоку совершенно бесполезной информации, если ваш тестовый пример вызывает много предупреждений.Есть ли способ подавить стек вызовов, но не само предупреждение?

Пример кода:

classdef fooTest < matlab.unittest.TestCase

    methods (Test)

        function bar(testCase)      
            testCase.verifyEqual(0,0);
            warning('!!!!!');
        end       
    end
end

Запуск теста:

>> result = run(fooTest);
Running fooTest
Warning: !!!!! 
> In fooTest/bar (line 7)
  In matlab.unittest.TestRunner/evaluateMethodCore (line 790)
  In matlab.unittest.TestRunner/evaluateMethodsOnTestContent (line 737)
  In matlab.unittest.TestRunner/runTestMethod (line 1061)
  In matlab.unittest.TestRunner/runTest (line 1015)
  In matlab.unittest.TestRunner/repeatTest (line 441)
  In matlab.unittest.TestRunner/runSharedTestCase (line 416)
  In matlab.unittest.TestRunner/runTestClass (line 943)
  In matlab.unittest.TestRunner/invokeTestContentOperatorMethod_ (line 838)
  In matlab.unittest.plugins.TestRunnerPlugin/runTestClass (line 407)
  In matlab.unittest.plugins.testrunprogress.ConciseProgressPlugin/runTestClass (line 61)
  In matlab.unittest.plugins.TestRunnerPlugin/invokeTestContentOperatorMethod_ (line 696)
  In matlab.unittest.TestRunner/evaluateMethodOnPlugins (line 696)
  In matlab.unittest.TestRunner/runTestSuite (line 880)
  In matlab.unittest.TestRunner/invokeTestContentOperatorMethod_ (line 838)
  In matlab.unittest.plugins.TestRunnerPlugin/runTestSuite (line 250)
  In matlab.unittest.plugins.FailureDiagnosticsPlugin/runTestSuite (line 106)
  In matlab.unittest.plugins.TestRunnerPlugin/invokeTestContentOperatorMethod_ (line 696)
  In matlab.unittest.plugins.TestRunnerPlugin/runTestSuite (line 250)
  In matlab.unittest.plugins.DiagnosticsRecordingPlugin/runTestSuite (line 184)
  In matlab.unittest.plugins.TestRunnerPlugin/invokeTestContentOperatorMethod_ (line 696)
  In matlab.unittest.plugins.TestRunnerPlugin/runTestSuite (line 250)
  In sltest.testmanager.plugins.TestManagerResultsPlugin/runTestSuite (line 60)
  In matlab.unittest.plugins.TestRunnerPlugin/invokeTestContentOperatorMethod_ (line 696)
  In matlab.unittest.TestRunner/evaluateMethodOnPlugins (line 696)
  In matlab.unittest.TestRunner/run (line 288)
  In matlab.unittest.TestSuite/run (line 543)
  In matlab.unittest.internal.RunnableTestContent/run (line 48) 
.
Done fooTest
__________

Ответы [ 2 ]

1 голос
/ 28 июня 2019

Какую версию MATLAB вы используете?В более поздних версиях эти стековые фреймы обрезаются так, что стеки фреймворков не включаются, но соответствующие фреймы стека от теста до тестируемого кода по-прежнему отображаются.

Ваше решение полностью перевернуть фреймы стекаможет быть хорошим обходным путем для более ранних версий, но это большой удар, и более поздние версии должны давать вам менее постороннюю информацию, в то же время предоставляя вам информацию, которая с большей вероятностью будет полезна.

Кроме того, ябезусловно, побудит вас стремиться запускать свой тестовый код без предупреждений вообще.Они, безусловно, могут указывать на проблемы.Фактически, вы можете настроить своего бегуна на более строгий и терпящий неудачу при наличии этих предупреждений, чтобы поддерживать чистоту тестирования.Для этого используйте FailOnWarningsPlugin или runtests (..., 'Strict', true) .В случае, если у вас действительно есть действительное предупреждение, вы сможете проверить его с помощью метода verifyWarning или ограничения IssuesWarnings , которое хорошо работает с этим рабочим процессом и правильно делает,Наконец, если есть случай, когда вы не проверяете предупреждение, но по какой-то причине вы не можете избежать выдачи предупреждения, вы можете использовать SuppressedWarningsFixture .

Надежда, которая помогает

Энди

0 голосов
/ 28 июня 2019

Я нашел это:

предупреждение ('off', 'backtrace')

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...