# Ejecuta las pruebas y siguientes pasos


## Ejecuta las pruebas

Ejecuta las pruebas desde la raíz de la solución:

```console
$ dotnet test ./RazorPagesProject.sln
```

La primera ejecución puede tardar más tiempo porque Docker necesita descargar la imagen de Microsoft SQL Server. En las siguientes ejecuciones, la imagen se almacenará en la caché local.

Deberías ver que xUnit detecta y ejecuta las pruebas, incluyendo la clase `MsSqlTests.IndexPageTests`. Testcontainers inicia un contenedor SQL Server, las pruebas se ejecutan contra él y el contenedor se detiene y elimina automáticamente una vez que finalizan las pruebas.

## Resumen

Al reemplazar SQLite con una instancia de Microsoft SQL Server gestionada por Testcontainers, las pruebas de integración se ejecutan contra el mismo tipo de base de datos utilizado en producción. Este enfoque detecta a tiempo problemas específicos de la base de datos, como diferencias en el dialecto SQL, el comportamiento de las transacciones o el manejo de tipos de datos entre SQLite y SQL Server.

La clase `MsSqlTests` utiliza `IAsyncLifetime` para gestionar el ciclo de vida del contenedor, y una `CustomWebApplicationFactory` anidada conecta la cadena de conexión del contenedor con la configuración de servicios de la aplicación. Puedes aplicar este mismo patrón a cualquier base de datos o servicio compatible con Testcontainers.

Para aprender más sobre Testcontainers, visita la [introducción a Testcontainers](https://testcontainers.com/getting-started/).

## Lectura recomendada

- [Documentación de Testcontainers para .NET](https://dotnet.testcontainers.org/)
- [Módulos de Testcontainers para .NET](https://dotnet.testcontainers.org/modules/)
- [Módulo Microsoft SQL Server](https://www.nuget.org/packages/Testcontainers.MsSql)
- [Pruebas de integración en ASP.NET Core](https://learn.microsoft.com/en-us/aspnet/core/test/integration-tests)

