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.
| Właściwość | Wartość |
|---|---|
| Identyfikator reguły | MSTEST0036 |
| Tytuł | Nie należy używać przesłaniania wewnątrz klasy testowej. |
| Kategoria | Projekt |
| Poprawka powodująca niezgodność lub niezgodność | Nierozdzielający |
| Domyślnie włączone | Tak |
| Domyślny poziom ważności | Ostrzeżenie |
| Wprowadzone w wersji | 3.6.0 |
| czy istnieje poprawka kodu | Nie |
Przyczyna
Metoda lub właściwość w klasie testowej ukrywa dziedziczony element członkowski zamiast go przesłaniać.
Opis reguły
Ukrywanie składowej powoduje utworzenie oddzielnych składowych o tej samej nazwie. Kod klasy bazowej może używać składowej bazowej, podczas gdy wyszukiwanie składowych w MSTest znajduje składową pochodną, więc dwie części fikstury testowej nie mają już tego samego stanu ani zachowania.
Na przykład właściwość ukryta TestContext może odbierać wstrzykiwany kontekst, podczas gdy kod klasy bazowej nadal odczytuje niezainicjowaną właściwość, powodując NullReferenceException. Ukryte metody cyklu życia lub testowe mogą również zmieniać, która odziedziczona implementacja zostanie uruchomiona. Unikatowe nazwy funkcji pomocniczych lub zamierzone przesłonięcia metod wirtualnych zachowują jawność tego kontraktu.
Jak naprawić naruszenia
Zmień nazwę lub usuń niezamierzony ukryty składnik. Jeśli chcesz uzyskać zachowanie polimorficzne, zastąp wirtualny element członkowski klasy bazowej zamiast go ukrywać.
Kiedy pomijać ostrzeżenia
Pomiń diagnostykę tylko wtedy, gdy ukrywanie elementu członkowskiego jest zamierzone i potwierdzono, że odnajdywanie testów, wywołania zwrotne cyklu życia oraz przypisanie TestContext nadal używają zamierzonych elementów członkowskich. Słowo kluczowe new nie scala dwóch składowych ani nie rozwiązuje ich odrębnego stanu.
Pomijanie ostrzeżenia
Jeśli chcesz po prostu pominąć pojedyncze naruszenie, dodaj dyrektywy preprocesora do pliku źródłowego, aby wyłączyć, a następnie ponownie włączyć regułę.
#pragma warning disable MSTEST0036
// The code that's violating the rule is on this line.
#pragma warning restore MSTEST0036
Aby wyłączyć regułę dla pliku, folderu lub projektu, ustaw jego ważność na none w pliku konfiguracji .
[*.{cs,vb}]
dotnet_diagnostic.MSTEST0036.severity = none
Aby uzyskać więcej informacji, zobacz Jak pominąć ostrzeżenia analizy kodu.