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 | 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.