Класс: matlab.unittest.
Пакет: matlab.unittest
Динамически добавьте диагностику для непройденных тестов
onFailure(testcase,failureDiag)onFailure(testcase,failureDiag,'IncludingAssumptionFailures',tf)
onFailure( добавляет диагностика для непройденных тестов. Если тест перестал работать, то среда тестирования выполняет диагностику. По умолчанию эта диагностика выполняется после отказов верификации, отказов утверждения, отказов критического утверждения и неперехваченных исключений.testcase,failureDiag)
onFailure( указывает, выполняет ли среда тестирования также диагностику после отказов предположения. Чтобы выполнить диагностику после отказов предположения также, установите testcase,failureDiag,'IncludingAssumptionFailures',tf)tf на true.
testCase — Экземпляр тестаmatlab.unittest.TestCaseЭкземпляр теста, заданного как matlab.unittest.TestCase.
failureDiag Диагностическая информацияmatlab.unittest.diagnostics.DiagnosticДиагностическая информация, чтобы отобразиться после отказа, заданного как вектор символов, массив строк, указатель на функцию или массив экземпляров matlab.unittest.diagnostics.Diagnostic.
Пример: @() disp('Failure Detected')
Пример: matlab.unittest.diagnostics.ScreenshotDiagnostic
tf Реагируйте на отказы предположенияfalse (значение по умолчанию) | trueРеагируйте на отказы предположения, заданные как false (logical 0) или true (logical 1). По умолчанию этим значением является false, и среда тестирования выполняет диагностику после отказов верификации, отказов утверждения, отказов критического утверждения и неперехваченных исключений. Однако среда тестирования не выполняет диагностику после отказов предположения. Чтобы выполнить дополнительную диагностику после отказов предположения, задайте это значение как true.
В вашей текущей рабочей папке создайте следующий тестовый класс SampleOnFailureTest.m.
classdef SampleOnFailureTest < matlab.unittest.TestCase methods(TestMethodSetup) function addFailureDiag(testCase) testCase.onFailure('Failure Detected'); end end methods (Test) function verificationFailTest(testCase) testCase.onFailure(@datetime) testCase.verifyEqual(42,13) end function passingTest(testCase) testCase.assertTrue(true) end function assumptionFailTest(testCase) testCase.assumeEmpty(rand(2)) end function assertionFailTest(testCase) act = randi(100,1,15); floor = randi(100,1,15); f = figure; hold on; plot(1:length(act),act,1:length(floor),floor); legend('actual','floor') testCase.addTeardown(@close,f) import matlab.unittest.diagnostics.FigureDiagnostic testCase.onFailure(FigureDiagnostic(f,'Formats','png')) testCase.assertGreaterThan(act,floor) end end end
В командной строке, запущенной тесты. Класс SampleOnFailureTest имеет эти результаты.
Диагностический 'Failure Detected' сообщения отображается для каждого теста с верификацией, утверждением или отказом критического утверждения, потому что addFailureDiag вызывает onFailure в функции в блоке TestMethodSetup.
Тест verificationFailTest добавляет другую диагностику после отказа, который отображает текущую дату и время.
Тест assumptionFailTest перестал работать предположением. Поэтому сообщение 'Failure Detected' не отображается.
Тест assertionFailTest отображает данные на графике. Если тест перестал работать, среда тестирования сохраняет график.
results = runtests('SampleOnFailureTest');Running SampleOnFailureTest
================================================================================
Verification failed in SampleOnFailureTest/verificationFailTest.
---------------------
Framework Diagnostic:
---------------------
verifyEqual failed.
--> The values are not equal using "isequaln".
--> Failure table:
Actual Expected Error RelativeError
______ ________ _____ ________________
42 13 29 2.23076923076923
Actual Value:
42
Expected Value:
13
----------------------
Additional Diagnostic:
----------------------
Failure Detected
------------------
Stack Information:
------------------
In C:\work\SampleOnFailureTest.m (SampleOnFailureTest.verificationFailTest) at 10
================================================================================
..
================================================================================
SampleOnFailureTest/assumptionFailTest was filtered.
Details
================================================================================
.
================================================================================
Assertion failed in SampleOnFailureTest/assertionFailTest and it did not run to completion.
---------------------
Framework Diagnostic:
---------------------
assertGreaterThan failed.
--> Each element must be greater than each corresponding element of the minimum value array.
Failing Indices:
1 2 3 4 5 6 9 12 13 14
Actual Value:
55 68 4 81 75 13 53 33 55 40 42 19 26 3 93
Minimum Value (Exclusive):
66 94 17 93 80 58 45 26 76 23 7 77 68 72 65
----------------------
Additional Diagnostic:
----------------------
Failure Detected
----------------------
Additional Diagnostic:
----------------------
Figure saved to:
--> C:\Temp\070a23db-3903-4abb-9976-2d29ec0a1e38\Figure_c2528bb2-6d72-48d5-a8ed-2a9d5ae7b3ee.png
------------------
Stack Information:
------------------
In C:\work\SampleOnFailureTest.m (SampleOnFailureTest.assertionFailTest) at 28
================================================================================
.
Done SampleOnFailureTest
__________
Failure Summary:
Name Failed Incomplete Reason(s)
=======================================================================================
SampleOnFailureTest/verificationFailTest X Failed by verification.
---------------------------------------------------------------------------------------
SampleOnFailureTest/assumptionFailTest X Filtered by assumption.
---------------------------------------------------------------------------------------
SampleOnFailureTest/assertionFailTest X X Failed by assertion.Чтобы добавить диагностику для каждого теста в вашем классе, вызовите метод onFailure от функции в блоке TestMethodSetup.
1. Если смысл перевода понятен, то лучше оставьте как есть и не придирайтесь к словам, синонимам и тому подобному. О вкусах не спорим.
2. Не дополняйте перевод комментариями “от себя”. В исправлении не должно появляться дополнительных смыслов и комментариев, отсутствующих в оригинале. Такие правки не получится интегрировать в алгоритме автоматического перевода.
3. Сохраняйте структуру оригинального текста - например, не разбивайте одно предложение на два.
4. Не имеет смысла однотипное исправление перевода какого-то термина во всех предложениях. Исправляйте только в одном месте. Когда Вашу правку одобрят, это исправление будет алгоритмически распространено и на другие части документации.
5. По иным вопросам, например если надо исправить заблокированное для перевода слово, обратитесь к редакторам через форму технической поддержки.