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

Используйте MATLAB® среда тестирования приложения к приложениям Разработчика тестового приложения или приложениям, созданным программно с помощью 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✔   ✔✔
Polaraxespolaraxes✔   ✔✔
Продвиньте инструментuipushtool✔     
Переключательuiradiobutton✔✔   ✔
Ползунокuislider ✔✔  ✔
Счетчикuispinner✔  ✔ ✔
Кнопка состоянияuibutton✔✔   ✔
Переключатель (рокер, ползунок, переключаются),uiswitch✔✔   ✔
Вкладкаuitab ✔    
Группа вкладкиuitabgroup ✔    
Таблицаuitable ✔ ✔ ✔
Текстовая областьuitextarea   ✔ ✔
Кнопка-переключательuitogglebutton✔✔   ✔
Переключите инструментuitoggletool✔✔    
Древовидный узелuitreenode ✔   ✔
Uiaxesuiaxes✔ ✔ ✔✔
Фигура пользовательского интерфейса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.

Смотрите также

Похожие темы