Escribir pruebas para una app
R2026bEn 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 lecturasDiastolicy 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
matlab.uitest.TestCase | matlab.unittest.diagnostics.ScreenshotDiagnostic