MSTEST0082: Klasa testowa dziedziczy cykl życia lub metodę testową z innej wersji MSTest

Property Wartość
Identyfikator reguły MSTEST0082
Title Klasa testowa dziedziczy cykl życia lub metodę testową z innej wersji MSTest
Kategoria Usage
Poprawka jest przełomowa lub nieprzełomowa Non-breaking
Domyślnie włączone Yes
domyślna ciężkość Warning
wprowadzone w wersji 4.4.0
Czy istnieje poprawka kodu Nie.

Przyczyna

Wykrywalna klasa testowa dziedziczy publiczną metodę testową lub metodę cyklu życia z zestawu, który odwołuje się do innej głównej wersji biblioteki MSTest.

Opis reguły

Narzędzie MSTest pasuje do atrybutów testu i cyklu życia według dokładnej tożsamości typu środowiska uruchomieniowego. Program MSTest v3 definiuje te atrybuty w programie Microsoft.VisualStudio.TestPlatform.TestFramework, a program MSTest v4 definiuje je w pliku MSTest.TestFramework. Jeśli biblioteka podstawowa i projekt testowy pochodny używają różnych wersji głównych, adapter dyskretnie ignoruje dziedziczone atrybuty z innego zestawu struktury. W związku z tym odziedziczone testy nie są wykrywane, a odziedziczone metody inicjowania lub czyszczenia nie są uruchamiane.

Na przykład udostępniona biblioteka testowa utworzona za pomocą biblioteki MSTest v3 może zadeklarować:

public abstract class SharedTests
{
    [TestMethod] public void InheritedTest() { }
}

Projekt MSTest w wersji 4, który pochodzi z klasy bazowej, wyzwala diagnostykę:

[TestClass]
public sealed class ProductTests : SharedTests { } // Violation

Analizator sprawdza odziedziczone metody testowe, metody inicjowania i oczyszczania testów oraz metody inicjowania i oczyszczania klas, które są skonfigurowane do uruchamiania dla klas pochodnych.

Jak naprawić naruszenia

Użyj tej samej głównej wersji MSTest zarówno w bibliotece bazowej, jak i w pochodnym projekcie testowym. Ponownie skompiluj zestaw, który deklaruje klasę bazową i dla atrybutu niestandardowego pochodzącego z atrybutu MSTest, ponownie skompiluj zestaw, który deklaruje atrybut niestandardowy.

Kiedy pomijać ostrzeżenia

Nie ignoruj ostrzeżeń z tej zasady. Naruszenie tej zasady oznacza, że MSTest po cichu pomija dziedziczone testy lub metody cyklu życia.

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

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

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

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

Zobacz także