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 | MSTEST0059 |
| Título | No use los atributos Parallelize y DoNotParallelize |
| Categoría | Usage |
| La corrección es disruptiva o no disruptiva | Non-breaking |
| Habilitado de forma predeterminada | Sí |
| Gravedad predeterminada | Advertencia |
| introducido en la versión | 4.1.0 |
| ¿Hay una corrección de código? | No |
Causa
Un ensamblado contiene tanto los atributos ParallelizeAttribute como DoNotParallelizeAttribute.
Descripción de la regla
Los atributos ParallelizeAttribute y DoNotParallelizeAttribute se excluyen mutuamente a nivel de ensamblaje. Cuando se aplican ambos atributos al mismo ensamblado, las pruebas se ejecutan secuencialmente. Esta configuración en conflicto indica una intención poco clara y debe resolverse eligiendo una estrategia de paralelización para el ensamblado de prueba.
using Microsoft.VisualStudio.TestTools.UnitTesting;
[assembly: Parallelize(Workers = 0, Scope = ExecutionScope.MethodLevel)] // Violation
[assembly: DoNotParallelize]
Cómo corregir infracciones
Quite uno de los atributos en conflicto en función de la estrategia de paralelización prevista.
Si desea la ejecución en paralelo:
using Microsoft.VisualStudio.TestTools.UnitTesting;
[assembly: Parallelize(Workers = 0, Scope = ExecutionScope.MethodLevel)]
Si desea la ejecución secuencial:
using Microsoft.VisualStudio.TestTools.UnitTesting;
[assembly: DoNotParallelize]
Si desea habilitar la paralelización en el nivel de ensamblado, pero deshabilitarla para clases o métodos específicos, aplique Parallelize en el nivel de ensamblado y DoNotParallelize en el nivel de clase o método:
using Microsoft.VisualStudio.TestTools.UnitTesting;
[assembly: Parallelize(Workers = 0, Scope = ExecutionScope.MethodLevel)]
[DoNotParallelize]
[TestClass]
public class SequentialTests
{
[TestMethod]
public void Test1() { }
}
[TestClass]
public class ParallelTests
{
[TestMethod]
public void Test2() { }
[DoNotParallelize]
[TestMethod]
public void Test3() { }
}
Cuándo suprimir las advertencias
No suprima las advertencias de esta regla. Tener ambos atributos crea una configuración de prueba ambigua que se debe resolver.
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 MSTEST0059
// The code that's violating the rule is on this line.
#pragma warning restore MSTEST0059
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.MSTEST0059.severity = none
Para obtener más información, consulte Cómo suprimir advertencias de análisis de código.