Nota
O acesso a esta página requer autorização. Pode tentar iniciar sessão ou alterar os diretórios.
O acesso a esta página requer autorização. Pode tentar alterar os diretórios.
| 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.