Sprache
Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
| Eigentum | Wert |
|---|---|
| Regel-ID | MSTEST0085 |
| Title |
[TestClass] sollte nicht auf abstrakte Klassen angewendet werden |
| Kategorie | Usage |
| Fix führt oder führt nicht zur Unterbrechung | Non-breaking |
| Standardmäßig aktiviert | Yes |
| Voreingestellte Schwere | Info |
| wurde in Version eingeführt. | 4.5.0 |
| Gibt es eine Codekorrektur | No |
Ursache
Eine abstrakte Klasse deklariert TestClassAttribute oder ein Attribut, das von ihr abgeleitet wird.
Regelbeschreibung
MSTest kann eine abstrakte Klasse nicht als Testklasse instanziieren oder ermitteln, sodass [TestClass] sie keine Auswirkungen auf den abstrakten Typ hat. Testmethoden, die in einer abstrakten Basisklasse deklariert sind, werden durch konkrete abgeleitete Klassen ermittelt. Jede konkrete Klasse muss ihr eigenes [TestClass] Attribut deklarieren, da Testklassenattribute nicht geerbt werden.
[TestClass] // Violation
public abstract class SharedTests
{
[TestMethod] public void CommonTest() { }
}
Wie man Verstöße behebt
Entfernen Sie [TestClass] aus der abstrakten Basisklasse und wenden Sie es auf jede konkrete abgeleitete Testklasse an.
public abstract class SharedTests { }
[TestClass]
public sealed class ConcreteTests : SharedTests { }
Wann sollten Warnungen unterdrückt werden?
Unterdrücken Sie diese Regel nicht. Das Attribut für die abstrakte Klasse macht die Klasse nicht auffindbar, und konkrete abgeleitete Klassen erfordern [TestClass]weiterhin.
Unterdrücken einer Warnung
#pragma warning disable MSTEST0085
// The code that's violating the rule is on this line.
#pragma warning restore MSTEST0085
Um die Regel für eine Datei, einen Ordner oder ein Projekt zu deaktivieren, legen Sie den Schweregrad auf none in der Konfigurationsdatei fest.
[*.{cs,vb}]
dotnet_diagnostic.MSTEST0085.severity = none
Weitere Informationen finden Sie unter Vorgehensweise: Unterdrücken von Codeanalyse-Warnungen.