Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
| 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.