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