Contenido principal

Escribir pruebas para una app

R2026b

En este ejemplo se muestra cómo escribir pruebas para una app de App Designer en la carpeta actual. Para interactuar con la app de forma programática y validar los resultados, utilice el marco de pruebas de apps y el marco de pruebas de unidades.

Para explorar las propiedades de la app antes de la prueba, cree una instancia de la app. Este paso no es necesario para las pruebas, pero resulta útil explorar las propiedades usadas por las pruebas. Por ejemplo, use app.BloodPressureSwitch para acceder al interruptor Blood Pressure dentro de la app.

app = PatientsDisplay;

En un archivo denominado PatientsDisplayTest.m de su carpeta actual, cree una clase de prueba que se derive de matlab.uitest.TestCase. Para crear una app para cada prueba y eliminarla después de la prueba, añada un método TestMethodSetup a la clase. A continuación, añada cuatro métodos Test a la clase:

  • Método testTab: probar la funcionalidad del cambio de pestañas. Elija la pestaña Data y, después, compruebe que la pestaña elegida tiene el título esperado.

  • Método testPlottingOptions: probar varias opciones de representación. Primero, pulse el botón de radio Histogram y compruebe que la etiqueta del eje x cambia. A continuación, cambie el control deslizante Bin Width y compruebe el número de bins.

  • Método testBloodPressure: probar los datos y la visualización de la presión sanguínea. Primero, extraiga los datos de presión sanguínea de la app y compruebe la etiqueta del eje y y los valores de los puntos de dispersión. A continuación, cambie a lecturas Diastolic y compruebe de nuevo la etiqueta y los valores mostrados.

  • Método testGender: probar los datos y la visualización del sexo. Primero, compruebe el número de puntos de dispersión para los datos de los hombres. A continuación, incluya los datos de las mujeres y compruebe que los dos conjuntos de datos se representan y que el color de los puntos de dispersión de los datos de las mujeres es rojo. Por último, excluya los datos de los hombres y pruebe el número de conjuntos de datos representados y puntos de dispersión.

classdef PatientsDisplayTest < matlab.uitest.TestCase
    properties
        App
    end

    methods (TestMethodSetup)
        function launchApp(testCase)
            testCase.App = PatientsDisplay;
            testCase.addTeardown(@delete,testCase.App)
        end
    end

    methods (Test)
        function testTab(testCase)
            % Choose the Data tab
            dataTab = testCase.App.DataTab;
            testCase.choose(dataTab)

            % Verify that the tab has the expected title
            testCase.verifyEqual( ...
                testCase.App.TabGroup.SelectedTab.Title,'Data')
        end

        function testPlottingOptions(testCase)
            % Press the Histogram radio button
            testCase.press(testCase.App.HistogramButton)

            % Verify that the x-axis label changed from Weight to Systolic
            testCase.verifyEqual(testCase.App.UIAxes.XLabel.String, ...
                'Systolic')

            % Change the bin width to 9
            testCase.choose(testCase.App.BinWidthSlider,9)

            % Verify the number of bins
            testCase.verifyEqual(testCase.App.UIAxes.Children.NumBins,4)
        end

        function testBloodPressure(testCase)
            % Extract the blood pressure data from the app
            t = testCase.App.DataTab.Children.Data;
            t.Gender = categorical(t.Gender);
            allMales = t(t.Gender == "Male",:);
            maleDiastolicData = allMales.Diastolic';
            maleSystolicData = allMales.Systolic';

            % Verify the y-axis label and that the male Systolic data is
            % displayed
            ax = testCase.App.UIAxes;
            testCase.verifyEqual(ax.YLabel.String,'Systolic')
            testCase.verifyEqual(ax.Children.YData,maleSystolicData)

            % Switch to Diastolic readings
            testCase.choose(testCase.App.BloodPressureSwitch,'Diastolic')

            % Verify the y-axis label and that the male Diastolic data
            % is displayed
            testCase.verifyEqual(ax.YLabel.String,'Diastolic')
            testCase.verifyEqual(ax.Children.YData,maleDiastolicData)
        end

        function testGender(testCase)
            % Take a screenshot if the test fails
            import matlab.unittest.diagnostics.ScreenshotDiagnostic
            testCase.onFailure(ScreenshotDiagnostic)

            % Verify the number of male scatter points
            ax = testCase.App.UIAxes;
            testCase.verifyNumElements(ax.Children.XData,47)

            % Include the female data
            testCase.choose(testCase.App.FemaleCheckBox)

            % Verify the number of displayed data sets and the color
            % representing the female data
            testCase.assertNumElements(ax.Children,2)
            testCase.verifyEqual(ax.Children(1).CData,[1 0 0])

            % Exclude the male data
            testCase.choose(testCase.App.MaleCheckBox,false)

            % Verify the number of displayed data sets and the number of
            % scatter points
            testCase.verifyNumElements(ax.Children,1)
            testCase.verifyNumElements(ax.Children.XData,50)
        end
    end
end

Ejecute las pruebas. En este ejemplo, se superan tres pruebas y una falla.

results = runtests("PatientsDisplayTest");
Running PatientsDisplayTest
...
================================================================================
Verification failed in PatientsDisplayTest/testGender.
    ---------------------
    Framework Diagnostic:
    ---------------------
    verifyNumElements failed.
    --> The value did not have the correct number of elements.
        
        Actual Number of Elements:
            53
        Expected Number of Elements:
            50
    
    Actual Value:
      Columns 1 through 13
    
       131   133   119   142   142   132   128   137   129   131   133   117   137
    
      Columns 14 through 26
    
       146   123   143   114   126   137   138   137   118   128   135   121   136
    
      Columns 27 through 39
    
       135   147   124   134   130   130   127   141   111   134   137   136   130
    
      Columns 40 through 52
    
       137   127   127   115   131   126   120   132   120   123   141   129   124
    
      Column 53
    
       134
    ----------------------
    Additional Diagnostic:
    ----------------------
    Screenshot captured to:
    --> C:\Temp\b5238869-2e26-4f74-838f-83b1929c4eb1\Screenshot_ad84e34f-7587-41ca-8a97-25c484bbcd70.png
    ------------------
    Stack Information:
    ------------------
    In C:\work\PatientsDisplayTest.m (PatientsDisplayTest.testGender) at 85
================================================================================
.
Done PatientsDisplayTest
__________

Failure Summary:

     Name                            Failed  Incomplete  Reason(s)
    =============================================================================
     PatientsDisplayTest/testGender    X                 Failed by verification.

Consulte también

|

Temas