MSTEST0024: Nie przechowuj elementu TestContext w statycznym polu

Właściwość Wartość
Identyfikator reguły MSTEST0024
Tytuł Nie przechowuj elementu TestContext w statycznej składowej
Kategoria Użycie
Poprawka powodująca niezgodność lub niepowodująca niezgodności Nierozdzielający
Domyślnie włączone Tak
Domyślna ważność Ostrzeżenie rozpoczynające się od wersji 4.0.0, informacje przed
Wprowadzone w wersji 3.4.0
czy istnieje poprawka kodu Nie

Przyczyna

Ta reguła zgłasza diagnostykę po wykonaniu przypisania do elementu członkowskiego static parametru typu TestContext.

Począwszy od MSTest 4.4, reguła wykrywa również przypisania z operatorem łączenia wartości null, takie jak s_testContext ??= testContext, i przypisania dekonstrukcji, które przechowują TestContext w składowej statycznej.

Opis reguły

Element TestContext przekazany do [AssemblyInitialize] lub [ClassInitialize] opisuje cykl życia tej fikstury, a nie aktualnie wykonywany test. Narzędzie MSTest nie aktualizuje buforowanego kontekstu fixtury, aby przekształcić go w kontekst dla każdego późniejszego testu.

Na przykład TestName i właściwości data-row należą do wykonania każdego testu i nie są dostępne w fiksturach klasy lub zestawu. Zapisany kontekst fixture nie może podać tych wartości dla bieżącego testu. Buforowanie statyczne zachęca również testy współbieżne do współużytkowania kontekstu, który nie jest ich kontekstem. Aby uzyskać dostęp do informacji dotyczących poszczególnych testów, użyj TestContext instancji testu; udostępniaj określone dane fixtury zamiast obiektu kontekstu.

Jak naprawić naruszenia

Nie należy przechowywać parametru [AssemblyInitialize] lub [ClassInitialize]TestContext .

Kiedy pomijać ostrzeżenia

Możesz pominąć ostrzeżenia z tej reguły, jeśli masz pewność, że to zachowanie rzeczywiście odpowiada temu, co chcesz zrobić.

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

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

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

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