MSTEST0053: Unikaj używania metod asercyjnych z parametrami formatu

Majątek Wartość
Identyfikator reguły MSTEST0053
Tytuł Unikaj używania metod asercyjnych z parametrami formatu
Kategoria Usage
Poprawka jest przełomowa lub nieprzełomowa Non-breaking
Domyślnie włączone Tak
domyślna ciężkość Ostrzeżenie
wprowadzone w wersji 3.11.0
Czy istnieje poprawka kodu Tak

Uwaga / Notatka

Ten analizator nie jest już istotny w MSTest 4, ponieważ usunięto API do asercji z parametrami formatu.

Przyczyna

Wywołanie metody asercji używa argumentów message i parameters do formatowania ciągów zamiast interpolowania ciągów.

Opis reguły

Przeciążenia z parametrami formatu odwołują się do wartości w komunikacie według pozycji numerycznej, więc zmiana listy argumentów może pozostawić symbol zastępczy skojarzony z nieprawidłową wartością. Kompilator nie sprawdza, czy każdy symbol zastępczy liczbowy odwołuje się do zamierzonej wartości.

Interpolacja ciągów umieszcza każde wyrażenie obok tekstu komunikatu, który go opisuje, i umożliwia kompilatorowi sprawdzenie odwołanych zmiennych. Ułatwia to odczytywanie i refaktoryzację komunikatów o błędach. Przeciążenia parametrów formatu są również usuwane w narzędziu MSTest 4, dlatego interpolacja pozwala uniknąć zależności od tych starszych interfejsów API.

Jak naprawić naruszenia

Zastąp wywołania używające parametrów formatu komunikatów interpolacją ciągów.

Na przykład zmień następujące elementy:

[TestMethod]
public void TestMethod()
{
    int expected = 5;
    int actual = GetValue();
    Assert.AreEqual(expected, actual, "Expected {0} but got {1}", expected, actual);
}

Do tego:

[TestMethod]
public void TestMethod()
{
    int expected = 5;
    int actual = GetValue();
    Assert.AreEqual(expected, actual, $"Expected {expected} but got {actual}");
}

Kiedy pomijać ostrzeżenia

Nie pomijaj ostrzeżeń z tej reguły. Te przeciążenia są usuwane w programie MSTest w wersji 4 i nie są zalecane.