Compartir por


MSTEST0059: No usar atributos Parallelize y DoNotParallelize

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
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.