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 | Wartość |
|---|---|
| Identyfikator reguły | MSTEST0069 |
| Title | Odziedziczona klasa [TestClass] jest ignorowana przez generator kodu źródłowego 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.3.0 |
| Czy istnieje poprawka kodu | No |
Note
Ten analizator jest dostarczany w MSTest.SourceGeneration pakiecie i jest ładowany tylko dla projektów, które zdecydowały się na generator źródła odbicia MSTest. Nie ma zastosowania, gdy jest używane domyślne odnajdywanie oparte na odbiciu.
Przyczyna
Klasa jest przeznaczona jako klasa testowa MSTest za pomocą [TestClass] atrybutu dziedziczonego z klasy bazowej, a nie deklarowania [TestClass] bezpośrednio.
Opis reguły
Generator źródła MSTest wylicza klasy testowe przy użyciu metody ForAttributeWithMetadataName, która nie jest zgodna z dziedziczeniem. Klasa, która opiera się na dziedziczeniu elementu [TestClass] z typu bazowego, jest niejawnie pomijana podczas wykrywania generowanego ze źródła i nie będzie można jej uruchomić, gdy dostawca generowany ze źródła jest aktywnym backendem refleksji.
[TestClass]
public class BaseTests
{
}
// Violation: relies on the inherited [TestClass] attribute.
public class DerivedTests : BaseTests
{
[TestMethod]
public void Test()
{
}
}
Jak naprawić naruszenia
Zastosuj [TestClass] bezpośrednio do klasy pochodnej, aby było wykrywane, kiedy wykrywanie generowane przez kod źródłowy jest włączone.
[TestClass]
public class BaseTests
{
}
[TestClass]
public class DerivedTests : BaseTests
{
[TestMethod]
public void Test()
{
}
}
Kiedy pomijać ostrzeżenia
Nie pomijaj ostrzeżeń z tej reguły po włączeniu generowania źródła, ponieważ klasa testowa, której dotyczy problem, nie zostanie odnaleziona ani wykonana. Można ją pominąć, jeśli klasa nie ma być klasą testową.
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 MSTEST0069
// The code that's violating the rule is on this line.
#pragma warning restore MSTEST0069
Aby wyłączyć regułę dla pliku, folderu lub projektu, ustaw jego ważność na none w pliku konfiguracji.
[*.{cs,vb}]
dotnet_diagnostic.MSTEST0069.severity = none
Aby uzyskać więcej informacji, zobacz Jak pominąć ostrzeżenia dotyczące analizy kodu.