MSTEST0030: typ zawierający [TestMethod] powinien być oznaczony [TestClass]

Właściwość Wartość
Identyfikator reguły MSTEST0030
Tytuł Typ zawierający [TestMethod] powinien być oznaczony za pomocą [TestClass]
Kategoria Użycie
Poprawka powodująca niezgodność lub niepowodująca niezgodności Nierozdzielający
Domyślnie włączone Tak
Domyślny poziom ważności Ostrzeżenie rozpoczynające się od wersji 4.0.0, informacje przed
Wprowadzone w wersji 3.5.0
czy istnieje poprawka kodu Nie

Przyczyna

Typ zawierający [TestMethod] powinien być oznaczony znacznikiem [TestClass], w przeciwnym razie metoda testowa będzie ignorowana bez ostrzeżenia.

Opis reguły

[TestClass] identyfikuje fixturę, która jest właścicielem wystąpień testowych i wywołań zwrotnych cyklu życia na poziomie klasy. Narzędzie MSTest odnajduje te kontenery, zanim wyliczy ich metody testowe. [TestMethod] sam nie ustanawia fixtury, więc klasa konkretna bez [TestClass] nie przyczynia się do własnych testów.

Jeśli klasa dostarcza tylko implementacje testów dla klas pochodnych, zadeklaruj ją jako abstrakcyjną, aby wyrazić, że nie jest samodzielnie uruchamialną fixturą. Oznacz każdą konkretną klasę testową za pomocą polecenia [TestClass].

Jak naprawić naruszenia

Oznacz klasę konkretną będącą właścicielem testów za pomocą polecenia [TestClass]. Jeśli klasa dostarcza tylko wspólne zachowanie bazowe, zadeklaruj ją jako abstrakcyjną i oznacz konkretne pochodne klasy testowe atrybutem [TestClass].

Kiedy pomijać ostrzeżenia

Można bezpiecznie wyciszyć ten komunikat diagnostyczny, jeśli masz pewność, że klasa jest dziedziczona i że testy zadeklarowane w tej klasie powinny być uruchamiane tylko w kontekście podklas. Niemniej jednak zalecamy oznaczenie klasy jako abstrakcyjnej.

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 MSTEST0030
// The code that's violating the rule is on this line.
#pragma warning restore MSTEST0030

Aby wyłączyć regułę dla pliku, folderu lub projektu, ustaw jego ważność na none w pliku konfiguracji .

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

Aby uzyskać więcej informacji, zobacz Jak pominąć ostrzeżenia analizy kodu.