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.
| Propiedad | Importancia |
|---|---|
| Identificador de la regla | MSTEST0061 |
| Título | Uso del atributo OSCondition en lugar de comprobaciones en tiempo de ejecución |
| Categoría | Usage |
| La corrección es disruptiva o no disruptiva | Non-breaking |
| Habilitado de forma predeterminada | Sí |
| Gravedad predeterminada | Información |
| introducido en la versión | 4.1.0 |
| ¿Hay una corrección de código? | Sí |
Causa
Un método de prueba usa las IsOSPlatform(OSPlatform) comprobaciones con una devolución anticipada en lugar del atributo OSConditionAttribute.
Descripción de la regla
Cuando quiera omitir pruebas basadas en el sistema operativo, use el OSConditionAttribute atributo en lugar de comprobaciones manuales en tiempo de ejecución. El enfoque de atributo proporciona una mejor detectabilidad de pruebas y una intención de prueba más clara y se integra correctamente con marcos de pruebas para marcar las pruebas como omitidas en lugar de superadas.
using System.Runtime.InteropServices;
[TestClass]
public class TestClass
{
[TestMethod]
public void TestMethod()
{
if (!RuntimeInformation.IsOSPlatform(OSPlatform.Windows)) // Violation
{
return;
}
// Test code that requires Windows
}
}
Cómo corregir infracciones
Reemplace la comprobación en tiempo de ejecución por el [OSCondition] atributo .
using Microsoft.VisualStudio.TestTools.UnitTesting;
[TestClass]
public class TestClass
{
[TestMethod]
[OSCondition(OperatingSystems.Windows)]
public void TestMethod()
{
// Test code that requires Windows
}
}
El [OSCondition] atributo admite los siguientes sistemas operativos:
OperatingSystems.Linux-
OperatingSystems.OSX(macOS) OperatingSystems.WindowsOperatingSystems.FreeBSD
También puede combinar varios sistemas operativos mediante operaciones a nivel de bits OR
[TestMethod]
[OSCondition(OperatingSystems.Windows | OperatingSystems.Linux)]
public void TestMethod()
{
// Test code that requires Windows or Linux
}
Cuándo suprimir las advertencias
Puede suprimir esta advertencia si la comprobación en tiempo de ejecución es más compleja que un patrón de retorno anticipado simple o si necesita realizar una lógica condicional que no se pueda expresar mediante el [OSCondition] atributo .
Supresión de una advertencia
Si solo quiere suprimir una única infracción, agregue directivas de preprocesador al archivo de origen para deshabilitar y volver a habilitar la regla.
#pragma warning disable MSTEST0061
// The code that's violating the rule is on this line.
#pragma warning restore MSTEST0061
Para deshabilitar la regla de un archivo, una carpeta o un proyecto, establezca su gravedad a none en el archivo de configuración.
[*.{cs,vb}]
dotnet_diagnostic.MSTEST0061.severity = none
Para obtener más información, consulte Cómo suprimir advertencias de análisis de código.