Пакет: matlab.test.behavior
Суперклассы: matlab.unittest.TestCase
Протестируйте, если класс удовлетворяет контракту для missing значения
Протестировать если missing значение для вашего класса удовлетворяет недостающему контракту в MATLAB®, создайте тестовый класс, который выводит из matlab.test.behavior.Missing класс. Если ваш класс представляет тип данных, и вы хотите, чтобы MATLAB обработал missing значения вашего класса, похожего на встроенные классы, гарантируйте, что ваш класс удовлетворяет missing контракт.
Как правило, вы используете тест поведения в качестве части рабочего процесса разработки через тестирование. Если вы хотите, чтобы отсутствующее значение для вашего класса удовлетворило недостающему контракту с MATLAB, запишите, что поведение тестирует и изменяет класс под тестом, пока результаты испытаний не состоят в том, как вы ожидаете. Например, если ваш класс поддерживает сравнения и упорядоченное расположение и применим как индикатор отсутствующего значения, все тесты должны передать. Если ваш класс не поддерживает упорядоченное расположение, установите SupportsOrdering свойство к false и ожидайте, что MATLAB отфильтровывает тесты, сопоставленные с упорядоченным расположением.
Ваш тест поведения только должен вывести из matlab.test.behavior.Missing и задайте абстрактные свойства. Однако начиная с matlab.test.behavior.Missing подкласс matlab.unittest.TestCase, можно использовать функциональность Среды Модульного тестирования.
Abstract | true |
HandleCompatible | true |
Для получения информации об атрибутах класса см. Атрибуты класса.
Задайте значения для всего abstract свойства в properties блок вашего тестового класса.
MissingValue — Отсутствующее значение для класса под тестомОтсутствующее значение для класса под тестом в виде допустимого скалярного значения MATLAB или выражения, которое возвращает неотсутствующее значение.
Пример: NaN или missing или ' '
SetAccess | public |
GetAccess | public |
Abstract | true |
PrototypeValue — Неотсутствующее значение для класса под тестомЛюбое неотсутствующее значение для класса под тестом в виде допустимого скалярного значения MATLAB или выражения, которое возвращает неотсутствующее значение. Как правило, если конструктор класса возвращает неотсутствующее значение, PrototypeValue вызов конструктора.
Пример: 0 или datetime
SetAccess | public |
GetAccess | public |
Abstract | true |
ClassesWithSupportedConversions — Классы, которые могут быть преобразованы в класс под тестомСписок классов, которые могут быть преобразованы в класс под тестом в виде массива строк имен классов.
Если можно преобразовать в другой класс и затем обратно в класс, то класс имеет поддерживаемое преобразование из другого класса. Например, если MyClass(OtherClass(missing)) == MyClass(missing) чем OtherClass класс с поддерживаемыми преобразованиями.
Пример: "string" или ["double","single"]
SetAccess | public |
GetAccess | public |
Abstract | true |
Типы данных: string
При необходимости переопределите значения для конкретных свойств в функции в TestClassSetup блок методов вашего тестового класса.
SupportsComparison — Класс поддерживает сравнениеtrue (значение по умолчанию) | falseИндикатор, что класс поддерживает сравнение в виде true или false. Класс, который поддерживает сравнения, позволяет использование == и ~=.
Если вы устанавливаете SupportsComparison к false, ожидайте, что сравнение и заказывающие тесты будут отфильтрованы отказом предположения. MATLAB не запускает тесты.
SetAccess | protected |
GetAccess | public |
Типы данных: логический
SupportsOrdering — логический скаляр, чтобы управлять запуском <>, и т.дtrue (значение по умолчанию) | falseИндикатор, что упорядоченное расположение поддержек класса в виде true или false. Класс, который поддерживает упорядоченное расположение, позволяет использование <, >, <=, и >=.
Если вы устанавливаете SupportsOrdering к false, ожидайте, что сопоставленные тесты будут отфильтрованы отказом предположения. MATLAB не запускает тесты.
SetAccess | protected |
GetAccess | public |
Типы данных: логический
UsableAsMissingIndicator — Класс применим как индикатор отсутствующего значенияtrue (значение по умолчанию) | falseИндикатор, что класс применим как индикатор отсутствующего значения к ismissing функция в виде true или false.
Если вы устанавливаете UsableAsMissingIndicator к false, ожидайте, что сопоставленные тесты будут отфильтрованы отказом предположения. MATLAB не запускает тесты.
SetAccess | protected |
GetAccess | public |
Типы данных: логический
FillValue — Значение для роста массиваMissingValue свойство (значение по умолчанию) | допустимое скалярное значение MATLABЗначение заливки, которое ваш класс использует для роста массивов в виде допустимого скалярного значения MATLAB. По умолчанию, значение FillValue совпадает со значением MissingValue свойство.
Пример: 0
SetAccess | protected |
GetAccess | public |
Создайте MyDataClass класс, который может содержать отсутствующее значение. Класс поддерживает сравнение и упорядоченное расположение, и реализация отсутствующего значения должна удовлетворить недостающему контракту в MATLAB. Если вы вызываете конструктора без входных параметров, это возвращает отсутствующее значение.
classdef MyDataClass properties SomeData; MissingVal = false; end methods function obj = MyDataClass(value) if nargin m = size(value,1); n = size(value,2); for i = 1:m for j = 1:n if ismissing(value(i,j)) obj(i,j).MissingVal = true; else obj(i,j).SomeData = value(i,j); obj(i,j).MissingVal = false; end end end else obj.MissingVal = true; end end % Define ismissing behavior function m = ismissing(obj,v) if nargin > 1 m = isequaln(obj,v); else m = [obj.MissingVal]; end m = reshape(m,size(obj)); end end end
Создать простой тестовый класс, который проверяет тот MyDataClass удовлетворяет контракту отсутствующего значения, подкласс matlab.test.behavior.Missing. Тест может использовать функциональность среды модульного тестирования, но MissingValueTest проверяет недостающий контракт только.
classdef MissingValueTest < matlab.test.behavior.Missing properties MissingValue = MyDataClass; PrototypeValue = MyDataClass(7); ClassesWithSupportedConversions = []; end end
Запустите тесты и рассмотрите результаты. Тесты для сравнения, упорядоченного расположения, равенства и использования MyDataClass как второй вход к ismissing сбой.
results = runtests('MissingValueTest');Running MissingValueTest
....
================================================================================
Error occurred in MissingValueTest/comparison and it did not run to completion.
---------
Error ID:
---------
'MATLAB:UndefinedFunction'
--------------
Error Details:
--------------
Undefined function 'eq' for input arguments of type 'MyDataClass'.
Error in matlab.test.behavior.Missing/comparison (line 129)
testCase.verifyFalse(testCase.MissingValue == testCase.MissingValue,
getString(message('MATLAB:test:behavior:missing:EqualFalse')));
================================================================================
.
================================================================================
Error occurred in MissingValueTest/ordering and it did not run to completion.
---------
Error ID:
---------
'MATLAB:UndefinedFunction'
--------------
Error Details:
--------------
Undefined function 'lt' for input arguments of type 'MyDataClass'.
Error in matlab.test.behavior.Missing/ordering (line 136)
testCase.verifyFalse(testCase.MissingValue < testCase.MissingValue,
getString(message('MATLAB:test:behavior:missing:LessThanFalse')));
================================================================================
.
================================================================================
Verification failed in MissingValueTest/isequalRules.
----------------
Test Diagnostic:
----------------
isequal(MissingValue, MissingValue) must return false, because all missing values are unequal.
---------------------
Framework Diagnostic:
---------------------
verifyFalse failed.
--> The value must evaluate to "false".
Actual Value:
logical
1
------------------
Stack Information:
------------------
In <matlabroot>\toolbox\matlab\datatypes\+matlab\+test\+behavior\Missing.m (Missing.isequalRules) at 145
================================================================================
================================================================================
Verification failed in MissingValueTest/isequalRules.
----------------
Test Diagnostic:
----------------
isequaln(MissingValue, missing) must return true.
---------------------
Framework Diagnostic:
---------------------
verifyTrue failed.
--> The value must evaluate to "true".
Actual Value:
logical
0
------------------
Stack Information:
------------------
In <matlabroot>\toolbox\matlab\datatypes\+matlab\+test\+behavior\Missing.m (Missing.isequalRules) at 147
================================================================================
.
================================================================================
Verification failed in MissingValueTest/IsMissing2ndInput.
----------------
Test Diagnostic:
----------------
ismissing(MissingValue, missing) must return true.
---------------------
Framework Diagnostic:
---------------------
verifyTrue failed.
--> The value must evaluate to "true".
Actual Value:
logical
0
------------------
Stack Information:
------------------
In <matlabroot>\toolbox\matlab\datatypes\+matlab\+test\+behavior\Missing.m (Missing.IsMissing2ndInput) at 154
================================================================================
...
Done MissingValueTest
__________
Failure Summary:
Name Failed Incomplete Reason(s)
=================================================================================
MissingValueTest/comparison X X Errored.
---------------------------------------------------------------------------------
MissingValueTest/ordering X X Errored.
---------------------------------------------------------------------------------
MissingValueTest/isequalRules X Failed by verification.
---------------------------------------------------------------------------------
MissingValueTest/IsMissing2ndInput X Failed by verification.Итеративно обновите MyDataClass удовлетворить недостающему контракту. Чтобы удовлетворить сравнению и упорядоченному расположению, задать eq, ne, lt, gt, le, и ge в methods блок MyDataClass.
% Class supports comparison function tf = eq(obj1,obj2) tf = ~any(ismissing([obj1 obj2])) && eq(obj1.SomeData,obj2.SomeData); end function tf = ne(obj1,obj2) tf = ~eq(obj1,obj2); end % Class supports ordering function tf = lt(obj1,obj2) tf = ~any(ismissing([obj1 obj2])) && lt(obj1.SomeData,obj2.SomeData); end function tf = gt(obj1,obj2) tf = lt(obj2,obj1); end function tf = le(obj1,obj2) tf = ~any(ismissing([obj1 obj2])) && ~gt(obj1,obj2); end function tf = ge(obj1,obj2) tf = le(obj2,obj1); end
Запустите тесты с кратким уровнем выходная деталь и рассмотрите результаты.
results = runtests('MissingValueTest','OutputDetail',1);
...... FAIL: MissingValueTest/isequalRules in Missing.isequalRules at 145 :: verifyFalse failed. FAIL: MissingValueTest/isequalRules in Missing.isequalRules at 147 :: verifyTrue failed. . FAIL: MissingValueTest/IsMissing2ndInput in Missing.IsMissing2ndInput at 154 :: verifyTrue failed. ...
Итеративно обновите MyDataClass удовлетворить правилам равенства. Define isqual и isequaln в methods блок MyDataClass.
% Class supports isequal/isequaln rules function tf = isequal(obj1,obj2) tf = eq(obj1,obj2); end function tf = isequaln(obj1,obj2) tf = all(ismissing([obj1 obj2])) || eq(obj1,obj2); end
Запустите тесты и рассмотрите результаты. Тестовая передача и MyDataClass удовлетворяет контракту отсутствующего значения.
results = runtests('MissingValueTest');Running MissingValueTest .......... Done MissingValueTest __________
Тест поведения утверждает, что следующие условия верны.
Отсутствующее значение в MissingValue свойство является тем же классом как значение в PrototypeValue свойство.
MissingValue и PrototypeValue значения являются скаляром.
ismissing функция вызвана с MissingValue значение возвращает true.
ismissing функция вызвана с PrototypeValue значение возвращает false.
Тест поведения проверяет, что преобразование отсутствующего значения к экземпляру вашего класса возвращает то же значение как MissingValue свойство.
Кроме того, для каждого класса, который может преобразовать ваш класс, тест поведения проверяет преобразование отсутствующих значений. Например, если можно преобразовать между OtherClass и MyClass, тест поведения проверяет тот MyClass(OtherClass(missing)) == MyClass(missing). ClassesWithSupportedConversions свойство указывает, какие классы ваш класс может преобразовать.
Учитывая массив объектов вашего класса, преобразованные в нижний индекс тесты присвоения проверяют, что можно расширить массив с помощью отсутствующего значения и присвоить отсутствующее значение области значений элементов в массиве.
Тесты конкатенации проверяют, что массивы объектов вашего класса могут быть конкатенированы с отсутствующими значениями.
Тесты равенства проверяют это isequal возвращает false для двух отсутствующих значений и isequaln возвращает true для двух отсутствующих значений.
SupportsComparisonПо умолчанию тест поведения принимает, что ваш класс поддерживает сравнение значений, включая отсутствующие значения. Тесты сравнения проверяют, что вы реализовали == и ~= когда MATLAB ожидает относительно отсутствующих значений.
Сравнение двух отсутствующих значений с == возвращает false.
Сравнение двух отсутствующих значений с ~= возвращает true.
Если ваш класс не поддерживает сравнения, установите SupportsComparison свойство к false таким образом, MATLAB не запускает эти тесты. В этом случае тесты сравнения отфильтрованы как отказы предположения. Кроме того, если SupportsComparison = false, MATLAB не запускает тесты упорядоченного расположения.
SupportsOrderingПо умолчанию тест поведения принимает что ваше упорядоченное расположение поддержек класса значений, включая отсутствующие значения. Тесты упорядоченного расположения проверяют, что вы реализовали <, >, <=, и >= когда MATLAB ожидает относительно отсутствующих значений. Для отсутствующих значений MATLAB ожидает, что все операции упорядоченного расположения возвращают false.
Если ваш класс поддерживает упорядоченное расположение, чтобы удовлетворить контракту поведения, это должно также поддержать сравнения. Если SupportsComparison = false, MATLAB не запускает тесты упорядоченного расположения или тесты сравнения. В этом случае тесты упорядоченного расположения отмечены как отказы предположения (отфильтрованные тесты).
Если ваш класс не поддерживает упорядоченное расположение, установите SupportsOrdering свойство к false таким образом, MATLAB не запускает эти тесты. В этом случае тесты упорядоченного расположения отмечены как отказы предположения (отфильтрованные тесты).
UsableAsMissingIndicatorПо умолчанию тест поведения принимает, что экземпляр вашего класса может использоваться в качестве дополнительного входного параметра к ismissing функция, которая представляет индикатор отсутствующего значения.
Если ваш класс не может быть индикатором отсутствующего значения, установите UsableAsMissingIndicator свойство к false таким образом, MATLAB не запускает эти тесты. В этом случае тесты упорядоченного расположения отмечены как отказы предположения (отфильтрованные тесты).
FillValueТест поведения проверяет, что, когда MATLAB выращивает массив элементов вашего класса, новым элементам задал значение FillValue свойство. По умолчанию, FillValue свойство совпадает с MissingValue свойство. Однако можно задать различное значение для FillValue.
1. Если смысл перевода понятен, то лучше оставьте как есть и не придирайтесь к словам, синонимам и тому подобному. О вкусах не спорим.
2. Не дополняйте перевод комментариями “от себя”. В исправлении не должно появляться дополнительных смыслов и комментариев, отсутствующих в оригинале. Такие правки не получится интегрировать в алгоритме автоматического перевода.
3. Сохраняйте структуру оригинального текста - например, не разбивайте одно предложение на два.
4. Не имеет смысла однотипное исправление перевода какого-то термина во всех предложениях. Исправляйте только в одном месте. Когда Вашу правку одобрят, это исправление будет алгоритмически распространено и на другие части документации.
5. По иным вопросам, например если надо исправить заблокированное для перевода слово, обратитесь к редакторам через форму технической поддержки.