Notatka
Dostęp do tej strony wymaga autoryzacji. Może spróbować zalogować się lub zmienić katalogi.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
| Property | Value |
|---|---|
| Identyfikator reguły | MSTEST0088 |
| Title | Wstrzykiwanie klasy testowej hosta MSTest nie jest obsługiwane przez wybrany tryb kompilacji |
| Category | Usage |
| Poprawka jest przełomowa lub nieprzełomowa | Non-breaking |
| Domyślnie włączone | Yes |
| domyślna ciężkość | Error |
| wprowadzone w wersji | 4.5.0 |
| Czy istnieje poprawka kodu | No |
Przyczyna
Włączasz wstrzykiwanie AddMSTestTestClassInjection klasy testowej MSTest należącej do hosta z pakietu eksperymentalnego MSTest.Extensions.Hosting , ale projekt testowy używa nieobsługiwanego trybu kompilacji.
Reguła ma zastosowanie do następujących ustawień:
| Tryb kompilacji | Setting |
|---|---|
| Natywne AOT | Parametr PublishAot ma wartość true. |
| kompilacja AOT | Parametr RunAOTCompilation ma wartość true. |
| Generowanie kodu źródłowego MSTest | Parametr EnableMSTestSourceGeneration ma wartość true. |
| Przeglądarkowe WebAssembly |
TargetPlatformIdentifier to browser, lub RuntimeIdentifier zawiera browser-wasm. |
Opis reguły
Wstrzykiwanie klasy testowej należącej do hosta używa aktywacji opartej na refleksji za pośrednictwem metody Microsoft.Extensions.DependencyInjection. Ta ścieżka aktywacji nie obsługuje Native AOT, kompilacji AOT, przeglądarkowego WebAssembly ani generowania kodu źródłowego MSTest.
Analizator zgłasza ten błąd przy wywołaniach AddMSTestTestClassInjection. Rozpoznaje również wstrzykiwanie zarządzane przez hosta włączone za pośrednictwem referencyjnego zestawu, który rejestruje ten proces rejestracji, nawet jeśli projekt testowy nie wywołuje metody bezpośrednio.
Ta reguła jest oddzielona od MSTEST0063, który weryfikuje konstruktory klasy testowej. Prawidłowy konstruktor nie powoduje, że wstrzykiwanie należące do hosta jest zgodne z nieobsługiwanym trybem kompilacji. Eksperymentalny interfejs API generuje również diagnostykę MSTESTEXP . Pomijanie MSTESTEXP nie pomija MSTEST0088 ani nie rozwiązuje niezgodności trybu kompilacji.
Reguła pozostaje włączona jako błąd w każdym MSTestAnalysisMode, w tym None.
Jak naprawić naruszenia
Wybierz jedną z następujących metod:
- Aby zachować wstrzykiwanie zarządzane przez hosta, użyj obsługiwanego trybu kompilacji. Wyłącz odpowiednie ustawienie AOT lub generowanie źródła albo ustaw jako docelowe środowisko uruchomieniowe inne niż WebAssembly w przeglądarce.
- Aby zachować wybrany tryb kompilacji, usuń rejestrację
AddMSTestTestClassInjection, w tym rejestracje w przywoływanych zestawach konfiguracji hosta. Użyj klas testowych z publicznym konstruktorem bez parametrów lub publicznym konstruktorem, który akceptuje tylko dokładny TestContext parametr.
Nie jest dostępna żadna automatyczna poprawka kodu, ponieważ odpowiednie rozwiązanie zależy od konfiguracji hosta Twojego projektu testowego i wymagań dotyczących wdrożenia.
Kiedy tłumić błędy
Nie wyłączaj tej reguły. Wyłączenie nie powoduje, że iniekcja hosta oparta na odbiciu jest zgodna z wybranym trybem kompilacji.
Pomiń komunikat diagnostyczny
Aby wyłączyć regułę dla pliku, folderu lub projektu, ustaw jego ważność na none w pliku konfiguracji.
[*.{cs,vb}]
dotnet_diagnostic.MSTEST0088.severity = none
Aby uzyskać więcej informacji, zobacz Jak pominąć ostrzeżenia dotyczące analizy kodu.