exponenta event banner

Обзор платформы тестирования приложений

Используйте платформу тестирования приложений 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 Метод жестов
presschoosedragtypehoverchooseContextMenu
Осиaxes  
Кнопкаuibutton    
Группа кнопокuibuttongroup     
Флажокuicheckbox   
Селектор датuidatepicker    
Дискретная ручкаuiknob    
Раскрывающийся списокuidropdown   
Редактировать поле (числовое, текстовое)uieditfield    
Изображениеuiimage    
Кнопкаuiknob   
Списокuilistbox    
Менюuimenu     
Группаuipanel   
Полярные осиpolaraxes   
Инструмент Pushuipushtool     
Переключатель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.

См. также

Связанные темы