Freigeben über


MSTEST0059: Verwenden Sie nicht die Attribute "Parallelize" und "DoNotParallelize".

Eigentum Wert
Regel-ID MSTEST0059
Title Verwenden Sie nicht sowohl Parallelize- als auch DoNotParallelize-Attribute
Kategorie Usage
Die Behebung ist eingreifend oder nicht eingreifend Non-breaking
Standardmäßig aktiviert Yes
Voreingestellte Schwere Warnung
wurde in Version eingeführt. 4.1.0
Gibt es eine Codekorrektur Nein

Ursache

Eine Assembly enthält sowohl ParallelizeAttribute- als auch DoNotParallelizeAttribute-Attribute.

Regelbeschreibung

Die Attribute ParallelizeAttribute und DoNotParallelizeAttribute schließen sich auf Assemblyebene gegenseitig aus. Wenn beide Attribute auf dieselbe Assembly angewendet werden, werden Tests sequenziell ausgeführt. Diese widersprüchliche Konfiguration weist auf unklare Absicht hin und sollte gelöst werden, indem sie eine Parallelisierungsstrategie für Ihre Testassembly auswählen.

using Microsoft.VisualStudio.TestTools.UnitTesting;

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

Wie man Verstöße behebt

Entfernen Sie eines der widersprüchlichen Attribute basierend auf Ihrer beabsichtigten Parallelisierungsstrategie.

Wenn Sie eine parallele Ausführung wünschen:

using Microsoft.VisualStudio.TestTools.UnitTesting;

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

Wenn Sie eine sequenzielle Ausführung wünschen:

using Microsoft.VisualStudio.TestTools.UnitTesting;

[assembly: DoNotParallelize]

Wenn Sie die Parallelisierung auf Assemblyebene aktivieren möchten, sie jedoch für bestimmte Klassen oder Methoden deaktivieren möchten, wenden Sie sie Parallelize auf Assemblyebene und DoNotParallelize auf Klassen- oder Methodenebene an:

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() { }
}

Wann sollten Warnungen unterdrückt werden?

Unterdrücken Sie keine Warnungen von dieser Regel. Wenn beide Attribute vorhanden sind, werden mehrdeutige Testkonfigurationen erstellt, die aufgelöst werden sollten.

Unterdrücken einer Warnung

Um nur eine einzelne Verletzung zu unterdrücken, fügen Sie der Quelldatei Präprozessoranweisungen hinzu, um die Regel zu deaktivieren und dann wieder zu aktivieren.

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

Um die Regel für eine Datei, einen Ordner oder ein Projekt zu deaktivieren, setzen Sie dessen Schweregrad auf none in der Konfigurationsdatei fest.

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

Weitere Informationen finden Sie unter Vorgehensweise: Unterdrücken von Codeanalyse-Warnungen.