Используйте платформу тестирования приложений MATLAB ® для тестирования приложений App Designer или приложений, созданных программным способом с помощью uifigure функция. Платформа тестирования приложений позволяет создать класс тестирования, который программно выполняет жест для компонента пользовательского интерфейса, например, нажатие кнопки или перетаскивание ползунка, и проверяет поведение приложения.
Создание тестов - тесты на основе классов могут использовать инфраструктуру тестирования приложений путем подкласса matlab.uitest.TestCase. Поскольку matlab.uitest.TestCase является подклассом matlab.unittest.TestCase, ваш тест имеет доступ к функциям платформы модульного тестирования, таким как квалификация, приспособления и плагины. Чтобы поэкспериментировать со структурой тестирования приложений в командной строке, создайте экземпляр тестового случая с помощью matlab.uitest.TestCase.forInteractiveUse.
Тестовое содержимое - как правило, тест приложения программно взаимодействует с компонентами приложения, используя метод жеста matlab.uitest.TestCase, такие как press или type, а затем выполняет квалификацию на результат. Например, тест может установить один флажок и убедиться, что другие флажки отключены. Или он может ввести число в текстовое поле и проверить, правильно ли приложение вычисляет результат. Эти типы тестов требуют понимания свойств тестируемого приложения. Чтобы проверить нажатие кнопки, необходимо знать, где в объекте приложения MATLAB хранится статус кнопки. Чтобы проверить результат вычисления, необходимо знать, как получить доступ к результату в приложении.
Тест очистки - рекомендуется включить действие отключения, чтобы удалить приложение после теста. Как правило, метод тестирования добавляет это действие с помощью addTeardown способ matlab.unittest.TestCase.
Блокировка приложений - когда при тестировании приложений создается фигура, инфраструктура блокирует фигуру немедленно, чтобы предотвратить внешнее взаимодействие с компонентами. Платформа тестирования приложений не блокирует компоненты пользовательского интерфейса при создании экземпляра matlab.uitest.TestCase.forInteractiveUse для экспериментирования в командной строке.
Чтобы разблокировать фигуру для отладки, используйте matlab.uitest.unlock функция.
Отключение оповещений - в некоторых случаях приложение отображает модальные диалоговые окна оповещений, которые делают невозможным взаимодействие с компонентами приложения. Для доступа к фигуре за диалоговым окном может потребоваться закрыть диалоговое окно. Чтобы программно закрыть диалоговое окно предупреждения в окне рисунка, используйте dismissAlertDialog способ.
Методы жестов matlab.uitest.TestCase поддерживает различные компоненты пользовательского интерфейса.
| Компонент | Типовая функция создания | matlab.uitest.TestCase Метод жестов | |||||
press | choose | drag | type | hover | chooseContextMenu | ||
| Оси | axes | ✔ | ✔ | ✔ | ✔ | ||
| Кнопка | uibutton | ✔ | ✔ | ||||
| Группа кнопок | uibuttongroup | ✔ | |||||
| Флажок | uicheckbox | ✔ | ✔ | ✔ | |||
| Селектор дат | uidatepicker | ✔ | ✔ | ||||
| Дискретная ручка | uiknob | ✔ | ✔ | ||||
| Раскрывающийся список | uidropdown | ✔ | ✔ | ✔ | |||
| Редактировать поле (числовое, текстовое) | uieditfield | ✔ | ✔ | ||||
| Изображение | uiimage | ✔ | ✔ | ||||
| Кнопка | uiknob | ✔ | ✔ | ✔ | |||
| Список | uilistbox | ✔ | ✔ | ||||
| Меню | uimenu | ✔ | |||||
| Группа | uipanel | ✔ | ✔ | ✔ | |||
| Полярные оси | polaraxes | ✔ | ✔ | ✔ | |||
| Инструмент Push | uipushtool | ✔ | |||||
| Переключатель | uiradiobutton | ✔ | ✔ | ✔ | |||
| Ползунок | uislider | ✔ | ✔ | ✔ | |||
| Спиннер | uispinner | ✔ | ✔ | ✔ | |||
| Кнопка состояния | uibutton | ✔ | ✔ | ✔ | |||
| Переключатель (Rocker, Slider, Toggle) | uiswitch | ✔ | ✔ | ✔ | |||
| Счет | uitab | ✔ | |||||
| Группа вкладок | uitabgroup | ✔ | |||||
| Стол | uitable | ✔ | ✔ | ✔ | |||
| Текстовая область | uitextarea | ✔ | ✔ | ||||
| Кнопка переключения | uitogglebutton | ✔ | ✔ | ✔ | |||
| Инструмент переключения | uitoggletool | ✔ | ✔ | ||||
| Узел дерева | uitreenode | ✔ | ✔ | ||||
| Оси пользовательского интерфейса | uiaxes | ✔ | ✔ | ✔ | ✔ | ||
| Рисунок пользовательского интерфейса | uifigure | ✔ | ✔ | ✔ | |||
В этом примере показано, как написать тест для приложения, которое предоставляет параметры для изменения размера выборки и карты цветов графика. Чтобы программно взаимодействовать с приложением и квалифицировать результаты, используйте структуру тестирования приложений в сочетании со структурой модульного тестирования.
В командной строке сделайте приложение доступным, добавив папку, содержащую приложение, в путь поиска MATLAB.
addpath(fullfile(matlabroot,'examples','matlab','main'))
Чтобы просмотреть свойства приложения перед тестированием, создайте экземпляр приложения в командной строке.
app = ConfigurePlotAppExample;
Этот шаг не является необходимым для тестов, но полезно изучить свойства, используемые тестами приложения. Например, использовать app.UpdatePlotButton для доступа к кнопке Обновить график в объекте приложения.
Создать тестовый класс, который наследует от matlab.uitest.TestCase.
classdef testConfigurePlotAppExample < matlab.uitest.TestCase methods (Test) end end
Создание метода тестирования test_SampleSize для проверки размера выборки. Метод тестирования изменяет размер образца, обновляет график и проверяет, что поверхность использует указанный размер образца. Вызов addTeardown удаляет приложение после завершения теста.
classdef testConfigurePlotAppExample < matlab.uitest.TestCase methods (Test) function test_SampleSize(testCase) app = ConfigurePlotAppExample; testCase.addTeardown(@delete,app); testCase.type(app.SampleSizeEditField,12); testCase.press(app.UpdatePlotButton); ax = app.UIAxes; surfaceObj = ax.Children; testCase.verifySize(surfaceObj.ZData,[12 12]); end end end
Создание второго метода тестирования test_Colormap для тестирования карты цветов. Метод тестирования выбирает карту цветов, обновляет график и проверяет, использует ли график указанную карту цветов. Теперь полный код выглядит следующим образом.
classdef testConfigurePlotAppExample < matlab.uitest.TestCase methods (Test) function test_SampleSize(testCase) app = ConfigurePlotAppExample; testCase.addTeardown(@delete,app); testCase.type(app.SampleSizeEditField,12); testCase.press(app.UpdatePlotButton); ax = app.UIAxes; surfaceObj = ax.Children; testCase.verifySize(surfaceObj.ZData,[12 12]); end function test_Colormap(testCase) app = ConfigurePlotAppExample; testCase.addTeardown(@delete,app); testCase.choose(app.ColormapDropDown,'Winter'); testCase.press(app.UpdatePlotButton); expectedMap = winter; ax = app.UIAxes; testCase.verifyEqual(ax.Colormap,expectedMap); end end end
В командной строке выполните тесты.
results = runtests('testConfigurePlotAppExample')Running testConfigurePlotAppExample
..
Done testConfigurePlotAppExample
__________
results =
1×2 TestResult array with properties:
Name
Passed
Failed
Incomplete
Duration
Details
Totals:
2 Passed, 0 Failed, 0 Incomplete.
5.0835 seconds testing time.