Если непройденный тест вызывается неправильным или неполным кодом, полезно повторно выполнить проваленные тесты быстро и удобно. Когда вы запускаете тестовый набор, результаты испытаний включают информацию о тестовом наборе и исполнителе тестов. Если существуют непройденные тесты в результатах, когда MATLAB отображает результаты испытаний существует ссылка, чтобы повторно выполнить проваленные тесты.
Totals:
1 Passed, 1 Failed (rerun), 0 Incomplete.
0.25382 seconds testing time.Эта ссылка позволяет вам изменять свой тестовый код или свой код под тестом и быстро повторно выполнять проваленные тесты. Однако, если вы вносите структурные изменения в свой тестовый класс, использование ссылки повторного выполнения не берет изменения. Структурные изменения включают добавление, удаление, или переименование метода тестирования и изменение тестового свойства параметра и его значения. В этом случае воссоздайте целый тестовый набор, чтобы взять изменения.
Создайте следующую функцию в своей текущей рабочей папке. Функция предназначается, чтобы вычислить квадратный и квадратный корень. Однако в этом примере, функция вычисляет куб значения вместо квадрата.
function [x,y] = exampleFunction(n) validateattributes(n,{'numeric'},{'scalar'}) x = n^3; % square (incorrect code, should be n^2) y = sqrt(n); % square root end
Создайте следующий тест в файле exampleTest.m.
function tests = exampleTest tests = functiontests(localfunctions); end function testSquare(testCase) [sqrVal,sqrRootVal] = exampleFunction(3); verifyEqual(testCase,sqrVal,9); end function testSquareRoot(testCase) [sqrVal,sqrRootVal] = exampleFunction(100); verifyEqual(testCase,sqrRootVal,10); end
Создайте тестовый набор и запустите тесты. testSquare протестируйте сбои потому что реализация exampleFunction является неправильным.
suite = testsuite('ExampleTest.m');
results = run(suite)Running exampleTest
================================================================================
Verification failed in exampleTest/testSquare.
---------------------
Framework Diagnostic:
---------------------
verifyEqual failed.
--> The values are not equal using "isequaln".
--> Failure table:
Actual Expected Error RelativeError
______ ________ _____ _____________
27 9 18 2
Actual Value:
27
Expected Value:
9
------------------
Stack Information:
------------------
In C:\Work\exampleTest.m (testSquare) at 7
================================================================================
..
Done exampleTest
__________
Failure Summary:
Name Failed Incomplete Reason(s)
=====================================================================
exampleTest/testSquare X Failed by verification.
results =
1×2 TestResult array with properties:
Name
Passed
Failed
Incomplete
Duration
Details
Totals:
1 Passed, 1 Failed (rerun), 0 Incomplete.
0.24851 seconds testing time.Обновите код в exampleFunction зафиксировать ошибку кодирования.
function [x,y] = exampleFunction(n)
validateattributes(n,{'numeric'},{'scalar'})
x = n^2; % square
y = sqrt(n); % square root
endНажмите (rerun) соединитесь в командном окне, чтобы повторно выполнить проваленный тест. Вы не можете повторно выполнить проваленные тесты, если переменная, которая хранит результаты испытаний, перезаписывается. Если ссылка больше не находится в Командном окне, можно ввести results в подсказке, чтобы просмотреть его.
Running exampleTest
.
Done exampleTest
__________
ans =
TestResult with properties:
Name: 'exampleTest/testSquare'
Passed: 1
Failed: 0
Incomplete: 0
Duration: 0.0034
Details: [1×1 struct]
Totals:
1 Passed, 0 Failed, 0 Incomplete.
0.0033903 seconds testing time.MATLAB хранит TestResult массив сопоставил с тестами, которые вы повторно выполняете в ans переменная. results 1x2 массив, который содержит все тесты в exampleTest.m, и ans 1x1 массив, который содержит повторное выполнение, следует из проваленного теста того.
whos
Name Size Bytes Class Attributes ans 1x1 664 matlab.unittest.TestResult results 1x2 1344 matlab.unittest.TestResult suite 1x2 96 matlab.unittest.Test
Чтобы программно повторно выполнить проваленные тесты, используйте Failed свойство на TestResult объект создать и запустить комплект отфильтрованного теста.
failedTests = suite([results.Failed]); result2 = run(failedTests);
Running exampleTest . Done exampleTest __________
Чтобы гарантировать, что все проходящие тесты продолжают передавать, повторно выполните полный тестовый набор.