Saltar al contenido principal

Pruebas (testing) en Dart

Cómo probar aplicaciones de Flutter, web y VM.

Las pruebas de software (testing), una parte importante del desarrollo de aplicaciones, ayudan a verificar que tu app funcione correctamente antes de lanzarla. Esta guía de pruebas de Dart describe varios tipos de pruebas y te indica dónde puedes aprender a probar tus aplicaciones y scripts de Flutter, web, y del lado del servidor.

Puedes ejecutar pruebas en la línea de comandos utilizando el comando dart test (o, para aplicaciones Flutter, flutter test).

Tipos de pruebas

#

Los documentos de pruebas de Dart se centran en tres tipos de pruebas, de entre los muchos tipos de pruebas con los que podrías estar familiarizado: unitarias (unit), de componentes (component) y de extremo a extremo (end-to-end, una forma de prueba de integración). La terminología de las pruebas varía, pero estos son los términos y conceptos con los que probablemente te encontrarás al utilizar tecnologías de Dart:

  • Las pruebas unitarias (unit tests) se centran en verificar la pieza de software comprobable más pequeña, como una función, un método o una clase. Tus conjuntos de pruebas (test suites) deberían tener más pruebas unitarias que otros tipos de pruebas.

  • Las pruebas de componentes (llamadas pruebas de widget en Flutter) verifican que un componente (que generalmente consta de múltiples clases) se comporte como se espera. Una prueba de componente a menudo requiere el uso de objetos simulados (mock objects) que puedan imitar acciones del usuario, eventos, realizar el diseño (layout) e instanciar componentes secundarios.

  • Las pruebas de integración y de extremo a extremo (end-to-end) verifican el comportamiento de una app completa o de una gran parte de ella. Una prueba de integración generalmente se ejecuta en un dispositivo simulado o real o en un navegador (para la web), y consta de dos partes: la app en sí y la app de prueba que pone a prueba a la app. Una prueba de integración a menudo mide el rendimiento, por lo que la app de prueba generalmente se ejecuta en un dispositivo o sistema operativo diferente al de la app que se está probando.

Bibliotecas de utilidad general

#

Aunque tus pruebas dependen en parte de la plataforma a la que está destinado tu código (Flutter, la web o el lado del servidor, por ejemplo), los siguientes paquetes son útiles en todas las plataformas de Dart:

  • package:test
    Proporciona una forma estándar de escribir pruebas en Dart. Puedes usar el paquete test para:

    • Escribe pruebas individuales o grupos de pruebas.
    • Utiliza la anotación @TestOn para restringir que las pruebas se ejecuten en entornos específicos.
    • Escribe pruebas asincrónicas de la misma manera en que escribirías pruebas sincrónicas.
    • Etiqueta las pruebas utilizando la anotación @Tag. Por ejemplo, define una etiqueta para crear una configuración personalizada para algunas pruebas, o para identificar algunas pruebas que necesitan más tiempo para completarse.
    • Crea un archivo dart_test.yaml para configurar pruebas etiquetadas en múltiples archivos o en un paquete completo.
  • package:mockito
    Proporciona una forma de crear objetos simulados (mock objects), fácilmente configurables para su uso en escenarios fijos, y de verificar que el sistema bajo prueba interactúe con el objeto simulado de las formas esperadas. Para ver un ejemplo que utiliza tanto package:test como package:mockito, consulta la biblioteca de la API de la Estación Espacial Internacional y sus pruebas unitarias en el paquete mockito.

Pruebas en Flutter

#

Utiliza los siguientes recursos para obtener más información sobre las pruebas de aplicaciones Flutter:

  • Probar aplicaciones Flutter
    Cómo realizar pruebas unitarias, de widgets o de integración en una aplicación Flutter.
  • flutter_test
    Una biblioteca de pruebas para Flutter construida sobre package:test.
  • flutter_driver
    Una biblioteca de pruebas para probar aplicaciones de Flutter en dispositivos reales y emuladores (en un proceso separado).
  • flutter_gallery
    Código fuente y pruebas para el ejemplo de la galería de Flutter.
  • flutter/dev/manual_tests
    Muchos ejemplos de pruebas en el SDK de Flutter.

Otras herramientas y recursos

#

También te pueden resultar útiles los siguientes recursos para desarrollar y depurar aplicaciones Dart.

IDE

#

Cuando se trata de depuración, tu primera línea de defensa es tu IDE. Existen complementos (plugins) de Dart para muchos de los IDE de uso común.

Dart DevTools

#

Dart DevTools es una suite de herramientas de rendimiento para Dart y Flutter. Para obtener detalles, consulta la documentación de Dart DevTools.

Integración continua

#

Considera el uso de integración continua (CI) para compilar tu proyecto y ejecutar sus pruebas después de cada commit. Dos servicios de CI para GitHub son GitHub Actions y AppVeyor.

Obtén más información sobre GitHub Actions:

  • Muchos paquetes proporcionados por el equipo de Dart utilizan GitHub Actions. Para ver un ejemplo, consulta markdown.yaml en el repositorio del paquete markdown. Para ver cómo migró ese repositorio de Travis CI a GitHub Actions, consulta la PR #353.