Sprache

MSTEST0088: MSTest-Hosttest-Testklasseninjektion wird vom ausgewählten Buildmodus nicht unterstützt.

Property Wert
Regel-ID MSTEST0088
Title Die Injektion von Testklassen in den MSTest-Host wird vom ausgewählten Build-Modus nicht unterstützt
Category Usage
Fix führt oder führt nicht zur Unterbrechung Non-breaking
Standardmäßig aktiviert Yes
Voreingestellte Schwere Error
wurde in Version eingeführt. 4.5.0
Gibt es eine Codekorrektur No

Ursache

Sie aktivieren die hosteigene MSTest-Testklasseneinfügung AddMSTestTestClassInjection über das experimentelle MSTest.Extensions.Hosting Paket, aber das Testprojekt verwendet einen nicht unterstützten Buildmodus.

Die Regel gilt für die folgenden Einstellungen:

Buildmodus Setting
Natives AOT PublishAot ist true.
AOT-Kompilierung RunAOTCompilation ist true.
MSTest-Quellgenerierung EnableMSTestSourceGeneration ist true.
Browser WebAssembly TargetPlatformIdentifier ist browser, oder RuntimeIdentifier enthält browser-wasm.

Regelbeschreibung

Hosteigene Injection von Testklassen verwendet reflexionsbasierte Aktivierung über Microsoft.Extensions.DependencyInjection. Dieser Aktivierungspfad unterstützt weder Native AOT, AOT-Kompilierung, Browser-WebAssembly noch MSTest-Quellgenerierung.

Der Analyzer meldet diesen Fehler bei Aufrufen von AddMSTestTestClassInjection. Außerdem wird die hosteigene Injection durch eine referenzierte Assembly erkannt, die die Registrierung aufzeichnet, auch wenn das Testprojekt die Methode nicht direkt aufruft.

Diese Regel ist von MSTEST0063 getrennt, das Testklassenkonstruktoren überprüft. Ein gültiger Konstruktor macht keine hosteigene Injektion mit einem nicht unterstützten Buildmodus kompatibel. Die experimentelle API erzeugt auch die MSTESTEXP-Diagnose; das Unterdrücken von MSTESTEXP unterdrückt nicht MSTEST0088 oder löst die Inkompatibilität des Buildmodus.

Die Regel bleibt in jedem MSTestAnalysisMode als Fehler aktiviert, einschließlich None.

Wie man Verstöße behebt

Wählen Sie einen der folgenden Ansätze aus:

  • Verwenden Sie einen unterstützten Build-Modus, um die Host-Injektion beizubehalten. Deaktivieren Sie die entsprechende AOT- oder Quellgenerierungseinstellung, oder zielen Sie auf eine andere Laufzeit als Browser WebAssembly ab.
  • Um den ausgewählten Buildmodus beizubehalten, entfernen Sie die AddMSTestTestClassInjection Registrierung, einschließlich der Registrierungen in referenzierten Hostsetupassemblys. Verwenden Sie Testklassen mit einem öffentlichen parameterlosen Konstruktor oder einem öffentlichen Konstruktor, der nur einen exakten TestContext Parameter akzeptiert.

Es ist keine automatische Codekorrektur verfügbar, da die entsprechende Lösung von den Hosteinrichtungs- und Bereitstellungsanforderungen ihres Testprojekts abhängt.

Wann Fehler unterdrückt werden sollen

Unterdrücken Sie diese Regel nicht. Die Unterdrückung macht die reflexionsbasierte Host-Injektion nicht mit dem ausgewählten Buildmodus kompatibel.

Diagnose unterdrücken

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

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

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

Siehe auch