Класс: 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. По иным вопросам, например если надо исправить заблокированное для перевода слово, обратитесь к редакторам через форму технической поддержки.