Partilhar via


MSTEST0059: Não use ambos os atributos Parallelize e DoNotParallelize

Propriedade Valor
ID da regra MSTEST0059
Título Não use simultaneamente os atributos Parallelize e DoNotParallelize
Categoria Usage
A correção é invasiva ou não invasiva Non-breaking
Ativado por padrão Yes
Severidade padrão Advertência
Introduzido na versão 4.1.0
Existe uma correção de código Não

Motivo

A assembly contém ambos os atributos ParallelizeAttribute e DoNotParallelizeAttribute.

Descrição da regra

Os atributos ParallelizeAttribute e DoNotParallelizeAttribute são mutuamente exclusivos ao nível da assemblagem. Quando ambos os atributos são aplicados ao mesmo conjunto, os testes correm sequencialmente. Esta configuração conflitante indica intenção pouco clara e deve ser resolvida escolhendo uma estratégia de paralelização para o seu conjunto de teste.

using Microsoft.VisualStudio.TestTools.UnitTesting;

[assembly: Parallelize(Workers = 0, Scope = ExecutionScope.MethodLevel)] // Violation
[assembly: DoNotParallelize]

Como corrigir violações

Remova um dos atributos conflitantes com base na sua estratégia de paralelização pretendida.

Se quiseres execução paralela:

using Microsoft.VisualStudio.TestTools.UnitTesting;

[assembly: Parallelize(Workers = 0, Scope = ExecutionScope.MethodLevel)]

Se quiseres execução sequencial:

using Microsoft.VisualStudio.TestTools.UnitTesting;

[assembly: DoNotParallelize]

Se quiser ativar a paralelização ao nível de montagem mas desativá-la para classes ou métodos específicos, aplique-se Parallelize ao nível de montagem e DoNotParallelize ao nível de classe ou 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() { }
}

Quando suprimir avisos

Não suprima avisos desta regra. Ter ambos os atributos cria uma configuração de teste ambígua que deve ser resolvida.

Suprimir um aviso

Se você quiser apenas suprimir uma única violação, adicione diretivas de pré-processador ao seu arquivo de origem para desativar e, em seguida, reativar a regra.

#pragma warning disable MSTEST0059
// The code that's violating the rule is on this line.
#pragma warning restore MSTEST0059

Para desabilitar a regra de um arquivo, pasta ou projeto, defina sua gravidade como none no arquivo de configuração.

[*.{cs,vb}]
dotnet_diagnostic.MSTEST0059.severity = none

Para obter mais informações, consulte Como suprimir avisos de análise de código.