Класс: matlab.unittest.TestCase
Пакет: matlab.unittest
Динамически добавьте диагностику для непройденных тестов
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
логический
0) или true
логический
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(@()disp(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
блок.
Вы щелкнули по ссылке, которая соответствует команде MATLAB:
Выполните эту команду, введя её в командном окне MATLAB.
1. Если смысл перевода понятен, то лучше оставьте как есть и не придирайтесь к словам, синонимам и тому подобному. О вкусах не спорим.
2. Не дополняйте перевод комментариями “от себя”. В исправлении не должно появляться дополнительных смыслов и комментариев, отсутствующих в оригинале. Такие правки не получится интегрировать в алгоритме автоматического перевода.
3. Сохраняйте структуру оригинального текста - например, не разбивайте одно предложение на два.
4. Не имеет смысла однотипное исправление перевода какого-то термина во всех предложениях. Исправляйте только в одном месте. Когда Вашу правку одобрят, это исправление будет алгоритмически распространено и на другие части документации.
5. По иным вопросам, например если надо исправить заблокированное для перевода слово, обратитесь к редакторам через форму технической поддержки.