Język

MSTEST0086: Usuń nadmiarowy atrybut metody testowej

Property Value
Identyfikator reguły MSTEST0086
Tytuł Usuń nadmiarowy atrybut metody testowej
Category Usage
Poprawka jest przełomowa lub nieprzełomowa Non-breaking
Domyślnie włączone Yes
domyślna ciężkość Informacje
wprowadzone w wersji 4.5.0
Czy istnieje poprawka kodu Tak, tylko w przypadku języka C#

Przyczyna

Metoda testowa deklaruje atrybut MSTest, którego faktyczne działanie wynika już z klasy testowej, która ją zawiera, lub z bazowej klasy testowej.

Opis reguły

Zduplikowane atrybuty utrudniają zrozumienie i konserwację obowiązujących zasad testowych. Reguła zgłasza warunki na poziomie metody, ustawienia ponawiania prób, ustawienia izolacji, metadane, elementy wdrożenia lub zależności tylko wtedy, gdy konfiguracja na poziomie klasy zapewnia już równoważne lub bardziej restrykcyjne zachowanie.

Reguła obejmuje OSCondition, ArchitectureConditionResourceLockRetryDoNotParallelizeCIConditionTestCategoryTestPropertyIgnoreDeploymentItemi .DependsOn

W przypadku OSCondition, Ignore, Retry, ArchitectureCondition, CICondition i DependsOn reguła zgłasza nadmiarowe atrybuty tylko dla metod zadeklarowanych w klasach testowych sealed. Te atrybuty na poziomie klasy nie są dziedziczone, więc usunięcie atrybutu na poziomie metody z klasy niezapieczętowanej może zmienić sposób, w jaki dziedziczony test jest uruchamiany w klasie pochodnej.

W przypadku DoNotParallelize, ResourceLock, TestCategory, TestProperty i DeploymentItem reguła uwzględnia również atrybuty klas bazowych. Reguła nie zgłasza MemberCondition, ExecutableCondition ani atrybutów niestandardowych.

[TestClass, DoNotParallelize]
public class Tests
{
    [TestMethod, DoNotParallelize] // Violation
    public void Test() { }
}

Jak naprawić naruszenia

Usuń nadmiarowy atrybut na poziomie metody. Zachowaj atrybut w metodzie, gdy zmienia się lub zawęża zachowanie na poziomie klasy.

[TestClass, DoNotParallelize]
public class Tests
{
    [TestMethod] public void Test() { }
}

Poprawka kodu w języku C# usuwa nadmiarowy atrybut. Visual Basic zgłasza diagnostykę, ale nie zapewnia automatycznej poprawki.

Kiedy pomijać ostrzeżenia

Pomiń regułę, gdy zduplikowany atrybut celowo dokumentuje zasady lokalne i wartość dokumentacji przewyższa koszt konserwacji.

Pomijanie ostrzeżenia

#pragma warning disable MSTEST0086
// The code that's violating the rule is on this line.
#pragma warning restore MSTEST0086

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

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

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

Zobacz także