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