Lingua

MSTEST0088: l'inserimento della classe di test dell'host MSTest non è supportato dalla modalità di compilazione selezionata

Proprietà Value
ID regola MSTEST0088
Title L'inserimento della classe di test dell'host MSTest non è supportato dalla modalità di compilazione selezionata
Category Usage
La modifica è dirompente o non dirompente Non rompente
Abilitato per impostazione predefinita Yes
Gravità predefinita Error
introdotta nella versione 4.5.0
È presente una correzione del codice No

Cause

Si abilita l'inserimento della classe di test MSTest di proprietà dell'host tramite AddMSTestTestClassInjection dal pacchetto sperimentale MSTest.Extensions.Hosting, ma il progetto di test usa una modalità di compilazione non supportata.

La regola si applica alle impostazioni seguenti:

Modalità costruzione Setting
AOT nativo PublishAot è true.
Compilazione AOT RunAOTCompilation è true.
Generazione del codice sorgente MSTest EnableMSTestSourceGeneration è true.
Browser WebAssembly TargetPlatformIdentifier è browser, oppure RuntimeIdentifier contiene browser-wasm.

Descrizione della regola

L'inserimento della classe di test di proprietà dell'host usa l'attivazione basata su reflection tramite Microsoft.Extensions.DependencyInjection. Tale percorso di attivazione non supporta Native AOT, la compilazione AOT, browser WebAssembly o la generazione del codice sorgente di MSTest.

L'analizzatore segnala questo errore sulle chiamate a AddMSTestTestClassInjection. Riconosce anche l'iniezione di proprietà dell'host abilitata tramite un assembly a cui viene fatto riferimento che registra l'operazione di registrazione, anche quando il progetto di test non chiama direttamente il metodo.

Questa regola è separata da MSTEST0063, che convalida i costruttori della classe di test. Un costruttore valido non rende compatibile l'iniezione gestita dall'host con una modalità di compilazione non supportata. L'API sperimentale produce anche la diagnostica MSTESTEXP; la soppressione di MSTESTEXP non elimina MSTEST0088 o risolve l'incompatibilità della modalità di compilazione.

La regola rimane abilitata come errore in ogni MSTestAnalysisMode, incluso None.

Come correggere le violazioni

Scegliere uno degli approcci seguenti:

  • Per mantenere l'iniezione host-owned, usare una modalità di compilazione supportata. Disabilitare l'impostazione AOT o di generazione del codice sorgente applicabile o specificare come destinazione un runtime diverso dal browser WebAssembly.
  • Per mantenere la modalità di compilazione selezionata, rimuovere la AddMSTestTestClassInjection registrazione, incluse le registrazioni negli assembly di installazione host a cui si fa riferimento. Usare classi di test con un costruttore pubblico senza parametri o un costruttore pubblico che accetta solo un parametro esatto TestContext .

Non è disponibile alcuna correzione automatica del codice perché la risoluzione appropriata dipende dalla configurazione dell'host del tuo progetto di test e dai requisiti di distribuzione.

Quando eliminare gli errori

Non eliminare questa regola. La soppressione non rende compatibile l'iniezione dell'host basata sulla reflection con la modalità di compilazione selezionata.

Sopprimere un messaggio diagnostico

Per disabilitare la regola per un file, una cartella o un progetto, impostarne la gravità su none nel file di configurazione .

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

Per altre informazioni, vedere Come eliminare gli avvisi di analisi del codice.

Vedere anche