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

Используйте 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 Метод жеста
presschoosedragtypehoverchooseContextMenu
Оси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 Axesuiaxes  
Фигура пользовательского интерфейса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.

См. также

Похожие темы