Используйте MATLAB® среда тестирования приложений для тестирования приложений App Designer или приложений, созданных программно с помощью uifigure функция. Среда тестирования приложений позволяет вам создать тестовый класс, который программно выполняет жест на компоненте пользовательского интерфейса, таком как нажатие кнопки или перетаскивание ползунка, и проверяет поведение приложения.
Создание тестов - основанные на классах тесты могут использовать среду тестирования приложений путем подклассификации matlab.uitest.TestCase. Потому что matlab.uitest.TestCase является подклассом matlab.unittest.TestCase, ваш тест имеет доступ к функциям среды модульного тестирования, такие как проверки, фиксаторы и плагины. Чтобы экспериментировать со средой тестирования приложений в командной строке, создайте образец теста с помощью matlab.uitest.TestCase.forInteractiveUse.
Содержание теста - Обычно тест приложения программно взаимодействует с компонентами приложения с помощью жестового метода matlab.uitest.TestCase, таких как press или type, а затем выполняет проверку результата. Например, тест может установить один флажок и проверить, что другие флажки отключены. Или может ввести число в текстовое поле и проверить, что приложение правильно вычисляет результат. Эти типы тестов требуют понимания свойств тестируемого приложения. Чтобы проверить нажатие кнопки, вы должны знать, где в объекте приложения MATLAB сохраняет состояние кнопки. Чтобы проверить результат расчета, вы должны знать, как получить доступ к результату в приложении.
Test Clean Up - это лучшая практика, чтобы включить действие отключения, чтобы удалить приложение после теста. Обычно метод тестирования добавляет это действие с помощью 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 | ✔ | ✔ | ✔ | |||
| Толкайте инструмент | uipushtool | ✔ | |||||
| Переключатель | uiradiobutton | ✔ | ✔ | ✔ | |||
| Ползунок | uislider | ✔ | ✔ | ✔ | |||
| Счетчик | uispinner | ✔ | ✔ | ✔ | |||
| Кнопка состояния | uibutton | ✔ | ✔ | ✔ | |||
| Переключатель (качалка, ползунок, переключатель) | uiswitch | ✔ | ✔ | ✔ | |||
| Вкладка | uitab | ✔ | |||||
| Вкладка | uitabgroup | ✔ | |||||
| Таблица | uitable | ✔ | ✔ | ✔ | |||
| Текстовая область | uitextarea | ✔ | ✔ | ||||
| Кнопка-переключатель | uitogglebutton | ✔ | ✔ | ✔ | |||
| Переключение инструмента | uitoggletool | ✔ | ✔ | ||||
| Узел дерева | uitreenode | ✔ | ✔ | ||||
| UI Axes | uiaxes | ✔ | ✔ | ✔ | ✔ | ||
| Фигура пользовательского интерфейса | uifigure | ✔ | ✔ | ✔ | |||
В этом примере показано, как написать тест для приложения, которое предоставляет опции для изменения размера выборки и палитры графика. Для программного взаимодействия с приложением и проверки результатов используйте среду тестирования приложений в сочетании с средой модульного тестирования.
В командной строке сделайте приложение доступным, добавив папку, которая включает приложение в путь поиска файлов MATLAB.
addpath(fullfile(matlabroot,'examples','matlab','main'))
Чтобы исследовать свойства приложения перед проверкой, создайте образец приложения в командной строке.
app = ConfigurePlotAppExample;
Этот шаг не нужен для тестов, но полезно исследовать свойства, используемые тестами приложения. Для примера используйте app.UpdatePlotButton для доступа к кнопке Update Plot в объекте приложения.
Создайте тестовый класс, который наследует от 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.