Nota:
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
MSTest, Microsoft Testing Framework, es un marco de pruebas totalmente compatible, de código abierto y multiplataforma para aplicaciones .NET. Permite escribir y ejecutar pruebas, y proporciona conjuntos de pruebas con integración con Visual Studio y Exploradores de pruebas de Visual Studio Code, la CLI de .NET y muchas canalizaciones de CI.
MSTest se hospeda en GitHub y funciona con todos los destinos de .NET admitidos.
Características clave
MSTest proporciona funcionalidades de prueba completas:
-
Pruebas basadas en datos: Ejecute pruebas con varias entradas mediante
DataRow,CombinatorialData,DynamicDatay orígenes de datos externos. - Administración del ciclo de vida de las pruebas: configuración y limpieza en los niveles de ensamblado, clase y prueba.
- Ejecución en paralelo: ejecute pruebas simultáneamente para reducir el tiempo de ejecución.
- Organización de prueba: clasifique, priorice y filtre las pruebas con atributos de metadatos.
- Analizadores de código: detecte problemas comunes y aplique los procedimientos recomendados en tiempo de compilación.
- Aserciones: métodos de aserción completos para validar los resultados.
Plataformas compatibles
MSTest admite una amplia gama de plataformas .NET y marcos de destino. En la tabla siguiente se resume la compatibilidad con la plataforma y consideraciones especiales:
| Plataforma | Marcos de destino | Compatibilidad con subprocesamiento | Atributos especiales | Notas |
|---|---|---|---|---|
| .NET | .NET 8+ | Paralelización completa | Todos los atributos | Recomendado para nuevos proyectos |
| .NET Framework | 4.6.2+ | Paralelización completa | Todos los atributos | Soporte completo de características |
| UWP | UAP 10, .NET 10 o posterior con herramientas de UWP | Subproceso de interfaz de usuario | UITestMethod |
MSTest 4.5 y MTP 2.5 son compatibles con las versiones clásica y moderna de UWP a través del sidecar del modelo de aplicación de MSTest.Sdk |
| WinUI 3 | .NET 8+ | Subproceso de interfaz de usuario | UITestMethod |
MTP admite hosts empaquetados, sin empaquetar y AppContainer; consulta Probar aplicaciones para UWP y WinUI 3 con MSTest y MTP |
| automatización de la interfaz de usuario de escritorio de Windows | destino de Windows para .NET 8+ | STA | STATestClass |
La versión preliminar de MSTest 4.5 puede iniciar aplicaciones Win32, Windows Forms y WPF sin empaquetar y exponer una ventana a través de Windows Automatización de la interfaz de usuario |
| AOT nativo | .NET 8+ | Paralelización completa | Mayoría de los atributos | Conjunto de características limitado; Consulte Ejemplo de AOT nativo |
| Navegador WebAssembly | host personalizado de .NET 10+ | Uniproceso | Limitado | La compatibilidad con la ejecución de MTP comienza con MSTest 4.4 |
| WASI WebAssembly | host personalizado de .NET 10+ | Uniproceso | Limitado | La compatibilidad con la ejecución de MTP comienza con MSTest 4.4 |
Consideraciones específicas de la plataforma
Pruebas de UWP
Las pruebas para UWP se ejecutan en el contenedor de aplicaciones para UWP y requieren el subproceso de interfaz de usuario para muchas operaciones:
[TestClass]
public class UwpTests
{
[UITestMethod]
public void TestUwpControl()
{
// Test runs on UI thread
var button = new Button();
Assert.IsNotNull(button);
}
}
A partir de MSTest 4.5 y MTP 2.5, usa MSTest.Sdk para ejecutar pruebas clásicas de UWP y .NET modernas a través de MTP. Un sidecar de confianza total registra y activa el paquete, autoriza el SID exacto del paquete de la aplicación para la comunicación MTP y copia los artefactos resultantes desde el almacenamiento del paquete.
La versión moderna de UWP requiere .NET 10, UseUwp, y la cadena de herramientas de compilación de UWP de Visual Studio. UWP clásica mantiene su estructura de proyecto uap10.0. Para obtener configuraciones completas, consulta el ejemplo de UWP moderno y el ejemplo de UWP clásico.
Pruebas de WinUI 3
Las pruebas de WinUI 3 también requieren acceso a subprocesos de interfaz de usuario para probar componentes visuales:
[TestClass]
public class WinUITests
{
[UITestMethod]
public void TestWinUIControl()
{
// Test runs on UI thread
var window = new MainWindow();
Assert.IsNotNull(window);
}
}
MTP admite aplicaciones de prueba de WinUI 3 empaquetadas de plena confianza, sin empaquetar y configuradas para AppContainer. MSTest.Sdk inicia directamente aplicaciones no empaquetadas y utiliza su sidecar de modelo de aplicación para registrar y activar aplicaciones empaquetadas.
La compatibilidad con AppContainer requiere MSTest 4.5 y MTP 2.5 o posterior. VSTest no admite WinUI 3 sin empaquetar. Para obtener más información sobre la configuración, consulta Probar aplicaciones para UWP y WinUI 3 con MSTest y MTP.
automatización de la interfaz de usuario de escritorio de Windows
El MSTest.Windows.UIAutomation paquete integra la administración del ciclo de vida de MSTest con Windows Automatización de la interfaz de usuario para aplicaciones Win32, Windows Forms y WPF sin empaquetar. Para la configuración, las limitaciones y las clases base ApplicationTest y WindowTest, consulte Probar aplicaciones de escritorio de Windows con MSTest Automatización de la interfaz de usuario.
AOT nativo
La compilación AOT nativa es compatible con algunas limitaciones debido a capacidades reducidas de reflexión. Use generadores de origen siempre que sea posible y pruebe los escenarios de AOT con el ejemplo NativeAotRunner.
Explorador y WASI WebAssembly
MSTest 4.4 admite hosts personalizados de .NET 10 para navegador o WASI WebAssembly. Para ejecutar pruebas desde un ensamblado MSTest al que se hace referencia, llame a AddMSTest. En el proyecto anfitrión, establezca EnableMSTestRunner en true y GenerateTestingPlatformEntryPoint en false. Mantenga las versiones del paquete MSTest y MTP alineadas.
En un entorno de ejecución de WebAssembly de un solo hilo, MSTest no puede interrumpir por la fuerza una prueba que ha superado el tiempo de espera. La espera del depurador no se admite en el navegador ni en WASI, y el navegador no admite las opciones de inicio del depurador.
MTP puede transmitir datos TRX e informar de artefactos de archivos de prueba y de sesión a través del sistema de archivos virtual WebAssembly del host y del canal de artefactos. La publicación en Azure DevOps solo funciona cuando el host proporciona acceso HTTP admitido y la autenticación de la canalización necesaria. Estas funciones no otorgan acceso sin restricciones a la red ni al sistema de archivos del host.
Para obtener un host de explorador completo, consulte el ejemplo BrowserPlayground.
Compatibilidad con subprocesos STA
Para escenarios de interoperabilidad COM en Windows, MSTest proporciona los atributos STATestClass y STATestMethod para ejecutar pruebas en un modelo de un solo subproceso. Para obtener más información sobre el subproceso STA, incluida la compatibilidad de continuación asincrónica con UseSTASynchronizationContext, consulte Atributos de subproceso.
Ejecutores de pruebas
MSTest admite dos plataformas de ejecución de pruebas:
- Microsoft.Testing.Platform (MTP): la plataforma de prueba moderna y recomendada con un rendimiento y extensibilidad mejorados.
- VSTest: la plataforma de prueba original y predeterminada para .NET.
Para los nuevos proyectos, se recomienda usar MTP con MSTest.Sdk.
Directiva de soporte técnico de MSTest
Desde v3.0.0, MSTest sigue estrictamente el control de versiones semántico.
El equipo de MSTest solo admite la versión más reciente publicada y anima encarecidamente a los usuarios a actualizar siempre a la versión más reciente para beneficiarse de mejoras y revisiones de seguridad. Las versiones preliminares no son compatibles con Microsoft, pero se ofrecen para pruebas públicas antes de la versión final.
Historial de versiones
MSTest ha experimentado una evolución significativa en las versiones principales:
- MSTest v1: el marco de pruebas original de Visual Studio
- MSTest v2: primera versión de código abierto con compatibilidad multiplataforma
- MSTest v3: reescritura moderna con una arquitectura y características mejoradas
- MSTest v4: versión actual con características mejoradas
Note
MSTest 4.5 está en desarrollo a partir de octubre de 2026. Las características marcadas como introducidas en MSTest 4.5 requieren una compilación en versión preliminar hasta que se publique la versión 4.5.0.
Para obtener más información sobre todas las versiones, consulte el registro de cambios de MSTest.
Si va a actualizar desde una versión anterior, consulte las guías de migración:
Cambios críticos
El equipo de MSTest revisa cuidadosamente y minimiza los cambios importantes. Cuando se necesitan cambios disruptivos, el equipo usa anuncios de GitHub y etiquetas de cambio disruptivo en las incidencias para informar a la comunidad con antelación, dando a los usuarios tiempo para proporcionar comentarios y plantear preocupaciones antes de que los cambios se publiquen.