Хотя это может быть не самое элегантное решение, я нашел гораздо менее навязчивый метод!
Шаг 1. Отключите определенные предупреждения, которые вы намеренно запускаете, в функции настройки набора тестов. Вы также можете сделать это и шаг 2 в каждой тестовой функции индивидуально, если это необходимо. Даже если предупреждение отключено и не выводится на экран в командном окне, вы можете получить доступ к подавленному предупреждению, используя «lastwarn».
function setup(testCase)
warning('off','MATLAB:CommandedAccelOutOfBounds');
warning('off','MATLAB:CommandedSteerOutOfBounds');
end
Шаг 2. Снова включите специальные предупреждения в функции разрыва комплекта тестов, чтобы вернуть matlab в правильное состояние после запуска комплекта тестов.
function teardown(testCase)
warning('on','MATLAB:CommandedAccelOutOfBounds');
warning('on','MATLAB:CommandedSteerOutOfBounds');
end
Шаг 3. Вместо использования функций «verifyWarning» или «assertWarning» для теста используйте «lastwarn» и «strcmp».
function testAcceleratorMax(testCase)
% Validate that acceleration input is forced to be <=1 and throws warning
state = [0,0,0,0]; input = [2,0];
xd = getPointMass2D_dot(state,input);
assert(isequal(xd,[0,0,1,0]),'Acceleration not ceiled correctly');
[~,warnID] = lastwarn; % Gets last warning, even though it was "off"
assert(strcmp(warnID,'MATLAB:CommandedAccelOutOfBounds'), 'Correct warning not thrown')
end