Compartir a través de


Introducción a UITest y Xamarin.Forms

Importante

Visual Studio App Center está programado para su retirada el 31 de marzo de 2025. Aunque puede seguir usando Visual Studio App Center hasta que se retire por completo, hay varias alternativas recomendadas a las que puede considerar la posibilidad de migrar.

Obtenga más información sobre las escalas de tiempo de soporte técnico y las alternativas.

UITest se puede usar con Xamarin.Forms para escribir pruebas de IU que se ejecuten en la nube en cientos de dispositivos.

Información general

App Center Test permite a los desarrolladores escribir pruebas de interfaz de usuario automatizadas para aplicaciones iOS y Android. Con algunos ajustes menores, se pueden probar aplicaciones de Xamarin.Forms con Xamarin.UITest, incluido el uso compartido del mismo código de prueba. Este artículo presenta sugerencias específicas para conseguir que Xamarin.UITest funcione con Xamarin.Forms.

Esta guía supone que está familiarizado con Xamarin.UITest. Para familiarizarse con Xamarin.UITest, se recomiendan las siguientes guías:

Una vez que se ha agregado un proyecto de UITest a una solución de Xamarin.Forms, los pasos para escribir y ejecutar las pruebas para una aplicación de Xamarin.Forms son los mismos que para una aplicación de Xamarin.Android o Xamarin.iOS.

Requisitos

Consulte Xamarin.UITest para confirmar que el proyecto está listo para las pruebas automatizadas de IU.

Adición de compatibilidad con UITest a aplicaciones de Xamarin.Forms

UITest automatiza la interfaz de usuario activando controles en la pantalla y proporcionando la entrada en cualquier lugar en el que un usuario interactuaría normalmente con la aplicación. Para habilitar pruebas que pueden pulsar un botón o escribir texto en un cuadro, el código de prueba necesita una forma de identificar los controles de la pantalla.

Para que el código de UITest pueda hacer referencia a los controles, cada control necesita un identificador único. En Xamarin.Forms, la forma recomendada de establecer este identificador es mediante la propiedad aAutomationId, como se muestra a continuación:

var b = new Button {
    Text = "Click me",
    AutomationId = "MyButton"
};
var l = new Label {
    Text = "Hello, Xamarin.Forms!",
    AutomationId = "MyLabel"
};

La propiedad AutomationId también se puede establecer en XAML:

<Button x:Name="b" AutomationId="MyButton" Text="Click me"/>
<Label x:Name="l" AutomationId="MyLabel" Text="Hello, Xamarin.Forms!" />

Nota:

El elemento AutomationId corresponde a un valor BindableProperty y también se puede establecer con una expresión de enlace.

Se debe agregar un valor AutomationId único a todos los controles que sean necesarios para las pruebas (como botones, entradas de texto y etiquetas cuyo valor es posible que se necesite consultar).

Advertencia

Se InvalidOperationException producirá una excepción si se intenta establecer la AutomationId propiedad de más de una Element vez.

Proyecto de aplicación de iOS

Para ejecutar pruebas en iOS, el paquete NuGet de Xamarin Test Cloud Agent debe agregarse al proyecto. Una vez agregado, copie el código siguiente en el AppDelegate.FinishedLaunching método :

#if ENABLE_TEST_CLOUD
// requires Xamarin Test Cloud Agent
Xamarin.Calabash.Start();
#endif

El ensamblado Calabash usa API de Apple no públicas, lo que hace que la App Store rechace las aplicaciones. Pero el vinculador Xamarin.iOS quitará el ensamblado Calabash del IPA final si no se le hace referencia explícitamente desde el código.

Nota:

De forma predeterminada, las compilaciones de versión no tienen la ENABLE_TEST_CLOUD variable del compilador, lo que hace que el ensamblado Calabash se quite de la agrupación de aplicaciones. Sin embargo, las compilaciones de depuración tienen definida la directiva del compilador de forma predeterminada, lo que impide que el enlazador quite el ensamblado.

La siguiente captura de pantalla muestra la variable de compilador ENABLE_TEST_CLOUD establecida para compilaciones de depuración:

Proyecto de aplicación de Android

A diferencia de iOS, los proyectos de Android no necesitan ningún código de inicio especial.

Escritura de UITests

Para más información sobre cómo escribir UITests, vea la documentación de UITest.

Usar AutomationId en la interfaz de usuario de Xamarin.Forms

Antes de poder escribir cualquier UITest, la interfaz de usuario de la aplicación de Xamarin.Forms debe permitir ejecutar scripts. Asegúrese de que todos los controles de la interfaz de usuario tengan un elemento AutomationIdpara que se pueda hacer referencia a ellos en el código de prueba.

Hacer referencia a AutomationId en UITests

Al escribir UITests, el valor AutomationId se expone de forma distinta en cada plataforma:

  • iOS usa el campo id.
  • Android usa el campo label.

Para escribir UITests multiplataforma que encuentren AutomationId en iOS y Android, use la consulta de prueba Marked:

app.Query(c=>c.Marked("MyButton"))

La forma más breve app.Query("MyButton") también funciona.

Adición de un proyecto UITest a una solución existente

Visual Studio tiene una plantilla que facilita agregar un proyecto de Xamarin.UITest a una solución existente de Xamarin.Forms:

  1. Haga clic con el botón derecho en la solución y seleccione Archivo > nuevo proyecto.

  2. Desde las plantillas Visual C#, seleccione la categoría Prueba. Seleccione la plantilla Multiplataforma de la aplicación > de prueba de IU:

    Agregar nuevo proyecto

    En este paso se agrega un nuevo proyecto con los paquetes NuGet NUnit, Xamarin.UITest y NUnitTestAdapter a la solución:

    Administrador de paquetes de NuGet

    NUnitTestAdapter es un ejecutor de pruebas de terceros que permite a Visual Studio ejecutar pruebas NUnit desde Visual Studio.

    El nuevo proyecto también tiene dos clases. AppInitializer contiene código para ayudar a inicializar y configurar pruebas. La otra clase, Tests, contiene código reutilizable para ayudar a iniciar la UITest.

  3. Agregue una referencia de proyecto desde el proyecto de UITest al proyecto de Xamarin.Android:

    Administrador de referencias de proyecto

    Este paso permite que NUnitTestAdapter ejecute UITests para la aplicación Android desde Visual Studio.

Después de agregar Xamarin.UITest a la solución de Xamarin.Forms, es posible crear UITests, ejecutarlos localmente y enviarlos a App Center Test.

Resumen

Las aplicaciones de Xamarin.Forms se pueden probar fácilmente con Xamarin.UITest mediante un mecanismo sencillo para exponer el elemento AutomationId como identificador de vista único para la automatización de pruebas. Una vez que se ha agregado un proyecto de UITest a una solución de Xamarin.Forms, los pasos para escribir y ejecutar las pruebas para una aplicación de Xamarin.Forms son los mismos que para una aplicación de Xamarin.Android o Xamarin.iOS.

Para obtener información sobre cómo enviar pruebas a App Center Test, consulte Envío de pruebas de UITests para Xamarin.Android o Envío de UITests para Xamarin.iOS. Para más información sobre UITest, vea la documentación de App Center Test.