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 | MSTEST0078 |
| Tytuł | Argumenty "[DependsOn]" powinny być prawidłowe |
| Kategoria | Usage |
| Poprawka jest przełomowa lub nieprzełomowa | Non-breaking |
| Domyślnie włączone | Tak |
| domyślna ciężkość | Warning |
| wprowadzone w wersji | 4.4.0 |
| Czy istnieje poprawka kodu | Nie |
Przyczyna
Atrybut [DependsOn] odwołuje się do testu po nazwie, a to odwołanie zawiera problem, który framework testowy może wykryć dopiero w czasie wykonywania, na przykład gdy obiekt docelowy nie istnieje.
Opis reguły
Platforma testowa celowo traktuje element docelowy [DependsOn], który nie odpowiada żadnemu testowi, jako niegroźne ostrzeżenie podczas wykonywania, dzięki czemu --filter i uruchomienia pojedynczych testów nadal działają. Oznacza to, że literówka lub zmiana nazwy po cichu spowoduje pominięcie zadeklarowanej kolejności zamiast spowodować błąd kompilacji. Ten analizator zgłasza problemy, które można określić w czasie kompilacji:
- Określona metoda nie istnieje w określonym typie.
- Przywoływany element członkowski nie jest metodą testową, więc zależność jest ignorowana.
- Przywoływany typ nie jest klasą testową, więc zależność jest ignorowana.
- Typ, do którego się odwołano, jest zadeklarowany w innej asemblacji (zależności są rozwiązywane w obrębie jednego źródła testowego).
- Typ, do którego się odwołano, jest abstrakcyjny, więc zamiast tego jego testy są uruchamiane w każdej pochodnej klasie testowej.
- Atrybut sprawia, że test zależy od siebie, czyli cyklu zależności, który kończy się niepowodzeniem w czasie wykonywania.
- Atrybut uczestniczy w cyklu zależności widocznym podczas kompilacji, co powoduje niepowodzenie każdego testu w tym cyklu w czasie wykonywania.
- Atrybut jest stosowany, gdy nie ma żadnego wpływu, ponieważ obiekt docelowy atrybutu nie jest metodą testową lub nie uruchamia testu.
[TestMethod]
public void CreateCart() { }
[TestMethod, DependsOn("CreatCart")] // Violation: typo, no such member
public void AddItem() { }
Jak naprawić naruszenia
Napraw literówkę lub zmień nazwę i użyj polecenia nameof , aby kompilator synchronizował odwołanie podczas zmieniania nazwy obiektu docelowego.
[TestMethod]
public void CreateCart() { }
[TestMethod, DependsOn(nameof(CreateCart))]
public void AddItem() { }
Kiedy pomijać ostrzeżenia
Nie ignoruj ostrzeżeń z tej zasady. Każdy przypadek zgłoszony przez ten analizator albo powoduje niepowodzenie testu zależnego w czasie wykonywania, na przykład z powodu samoodwołania lub cyklu, albo po cichu ignoruje zadeklarowaną kolejność, na przykład z powodu literówki lub odwołania do elementu, który nie jest testem.
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 MSTEST0078
// The code that's violating the rule is on this line.
#pragma warning restore MSTEST0078
Aby wyłączyć regułę dla pliku, folderu lub projektu, ustaw jego ważność na none w pliku konfiguracji.
[*.{cs,vb}]
dotnet_diagnostic.MSTEST0078.severity = none
Aby uzyskać więcej informacji, zobacz Jak pominąć ostrzeżenia dotyczące analizy kodu.