Configuración de MSTest
MSTest, Microsoft Testing Framework, es un marco de pruebas para aplicaciones .NET. Permite escribir y ejecutar pruebas y proporcionar conjuntos de pruebas con integración en Visual Studio y Exploradores de pruebas de Visual Studio Code, la CLI de .NET y muchas canalizaciones de CI.
MSTest es un marco de pruebas totalmente compatible, de código abierto y multiplataforma que funciona con todos los destinos de .NET compatibles (.NET Framework, .NET Core, .NET, .NET, UWP, WinUI, etc.) hospedados en GitHub.
Runsettings
Se puede usar un archivo .runsettings para configurar cómo se ejecutan las pruebas unitarias. Para obtener más información sobre los runsettings y las configuraciones relacionadas con la plataforma, puede consultar la documentación sobre los runsettings de VSTest o la documentación sobre los runsettings de MSTest.
Elemento MSTest
Las siguientes entradas de runsettings permiten configurar cómo se comporta MSTest.
Configuración | Default | Valores |
---|---|---|
AssemblyCleanupTimeout | 0 | Especifique globalmente el tiempo de espera que se aplicará en cada instancia del método de limpieza de ensamblados. El atributo [Timeout] especificado en el método de limpieza de ensamblados invalida el tiempo de espera global. |
AssemblyInitializeTimeout | 0 | Especifique globalmente el tiempo de espera que se aplicará en cada instancia del método de inicialización del ensamblado. El atributo [Timeout] especificado en el método de inicialización del ensamblado invalida el tiempo de espera global. |
AssemblyResolution | False | Puede especificar rutas de acceso a más ensamblados cuando busque y ejecute pruebas unitarias. Por ejemplo, puede utilizar estas rutas de acceso para los ensamblados de dependencias que no estén en el mismo directorio que el ensamblado de pruebas. Para especificar una ruta de acceso, use un elemento Directory Path. Las rutas de acceso pueden incluir variables de entorno.<AssemblyResolution> <Directory path="D:\myfolder\bin\" includeSubDirectories="false"/> </AssemblyResolution> Esta característica solo se aplica al usar un destino de .NET Framework. |
CaptureTraceOutput | true | Capture mensajes de texto procedentes de las API de Console.Write* , Trace.Write* y Debug.Write* que se asociarán a la prueba en ejecución actual. |
ClassCleanupLifecycle | EndOfClass | Si quiere que la limpieza de clases se produzca al final del ensamblado, establezca este valor en EndOfAssembly. (Ya no se admite a partir de MSTest v4, ya que EndOfClass es el comportamiento de limpieza de clase predeterminado, aparte del único) |
ClassCleanupTimeout | 0 | Especifique globalmente el tiempo de espera que se aplicará en cada instancia del método de limpieza de clases. El atributo [Timeout] especificado en el método de limpieza de clases invalida el tiempo de espera global. |
ClassInitializeTimeout | 0 | Especifique globalmente el tiempo de espera que se aplicará en cada instancia del método de inicialización de clase. El atributo [Timeout] especificado en el método de inicialización de la clase invalida el tiempo de espera global. |
DeleteDeploymentDirectoryAfterTestRunIsComplete | true | Para conservar el directorio de implementación después de una serie de pruebas, establezca este valor en false. |
DeploymentEnabled | true | Si el valor se establece en false, los elementos de implementación especificados en el método de prueba no se copian al directorio de implementación. |
DeployTestSourceDependencies | true | Valor que indica si se van a implementar las referencias del origen de la prueba. |
EnableBaseClassTestMethodsFromOtherAssemblies | true | Valor que indica si se va a habilitar la detección de métodos de prueba desde clases base en un ensamblado diferente desde la clase de prueba heredada. |
ForcedLegacyMode | false | En versiones anteriores de Visual Studio, el adaptador MSTest se optimizó para que fuera más rápido y escalable. Es posible que parte del comportamiento, como el orden en que se ejecutan las pruebas, no sea exactamente igual que en ediciones anteriores de Visual Studio. Establezca este valor en true para utilizar el adaptador de pruebas más antiguo. Por ejemplo, es posible usar este valor si tiene un archivo app.config especificado para una prueba unitaria. Se recomienda que considere la refactorización de las pruebas para poder usar el adaptador más reciente. |
MapInconclusiveToFailed | False | Si una prueba finaliza un estado no concluyente, se le asigna el estado Omitido en el Explorador de pruebas. Si quiere que las pruebas no concluyentes se muestren como Error, establezca el valor en true. |
MapNotRunnableToFailed | true | Valor que indica si se asignará a la prueba con errores un resultado no ejecutable. |
Parallelize | Se usa para establecer la configuración de paralelización: Workers: número de subprocesos o trabajos que se usarán para la paralelización, que es de forma predeterminada el número de procesadores de la máquina actual. SCOPE: ámbito de paralelización. Puede establecerlo en MethodLevel. De forma predeterminada, es ClassLevel. <Parallelize><Workers>32</Workers><Scope>MethodLevel</Scope></Parallelize> |
|
SettingsFile | Puede especificar un archivo de configuración de pruebas para usarlo con el adaptador MSTest aquí. También puede especificarlo en el menú Configuración. Si especifica este valor, también debe establecer ForcedLegacyMode en true. <ForcedLegacyMode>true</ForcedLegacyMode> |
|
TestCleanupTimeout | 0 | Especifique globalmente el tiempo de espera que se aplicará en cada instancia del método de limpieza de pruebas. El atributo [Timeout] especificado en el método de limpieza de pruebas invalida el tiempo de espera global. |
TestInitializeTimeout | 0 | Especifique globalmente el tiempo de espera que se aplicará en cada instancia del método de inicialización de prueba. El atributo [Timeout] especificado en el método de inicialización de prueba invalida el tiempo de espera global . |
TestTimeout | 0 | Obtiene el tiempo de espera del caso de prueba global especificado. |
TreatClassAndAssemblyCleanupWarningsAsErrors | false | Para ver los problemas en las limpiezas de clases como errores, establezca este valor en true. |
TreatDiscoveryWarningsAsErrors | false | Para notificar advertencias de detección de pruebas como errores, establezca este valor en true. |
ConsiderFixturesAsSpecialTests | false | Para mostrar AssemblyInitialize , AssemblyCleanup , ClassInitialize , ClassCleanup como entradas individuales en Visual Studio y Visual Studio Code Test Explorer y registro .trx, establezca este valor en true. |
Elemento TestRunParameter
<TestRunParameters>
<Parameter name="webAppUrl" value="http://localhost" />
</TestRunParameters>
Los parámetros de la serie de pruebas proporcionan una manera de definir las variables y los valores que están disponibles para las pruebas en tiempo de ejecución. Acceda a los parámetros mediante la propiedad MSTest TestContext.Properties:
private string _appUrl;
public TestContext TestContext { get; set; }
[TestMethod]
public void HomePageTest()
{
string _appUrl = TestContext.Properties["webAppUrl"];
}
Para usar parámetros de serie de pruebas, agregue una propiedad TestContext pública a la clase de prueba.
Archivo de ejemplo .runsettings
El siguiente XML muestra el contenido de un archivo .runsettings típico. Copie el código y edítelo para satisfacer sus necesidades.
Cada elemento del archivo es opcional, porque cada valor tiene un valor predeterminado.
<?xml version="1.0" encoding="utf-8"?>
<RunSettings>
<!-- Parameters used by tests at run time -->
<TestRunParameters>
<Parameter name="webAppUrl" value="http://localhost" />
<Parameter name="webAppUserName" value="Admin" />
<Parameter name="webAppPassword" value="Password" />
</TestRunParameters>
<!-- MSTest -->
<MSTest>
<MapInconclusiveToFailed>True</MapInconclusiveToFailed>
<CaptureTraceOutput>false</CaptureTraceOutput>
<DeleteDeploymentDirectoryAfterTestRunIsComplete>False</DeleteDeploymentDirectoryAfterTestRunIsComplete>
<DeploymentEnabled>False</DeploymentEnabled>
<ConsiderFixturesAsSpecialTests>False</ConsiderFixturesAsSpecialTests>
<AssemblyResolution>
<Directory path="D:\myfolder\bin\" includeSubDirectories="false"/>
</AssemblyResolution>
</MSTest>
</RunSettings>