Dela via


MSTEST0018: DynamicData ska vara giltigt

Property Värde
Regel-ID MSTEST0018
Title DynamicData ska vara giltigt
Kategori Förbrukning
Korrigeringen är icke-bakåtkompatibel Icke-icke-bryta
Aktiverad som standard Ja
Standard allvarlighetsgrad Varning
Introducerad i version 3.6.0

Orsak

En metod som är markerad med [DynamicData] ska ha en giltig layout.

Regelbeskrivning

Metoder som är markerade med [DynamicData] bör också markeras med [TestMethod] (eller ett härlett attribut).

Medlemmen "datakälla" refererade till:

  • bör finnas på den angivna typen (aktuell klass om ingen typ har angetts)
  • bör inte ha överlagringar
  • ska vara av samma slag (metod eller egenskap) som egenskapen DataSourceType
  • bör vara public
  • bör vara static
  • bör inte vara generisk
  • ska vara parameterlös
  • ska returnera IEnumerable<object[]>, IEnumerable<Tuple<T,...>> eller IEnumerable<ValueTuple<,...>>

Medlemmen "visningsnamn" refererade till:

  • bör finnas på den angivna typen (aktuell klass om ingen typ har angetts)
  • bör inte ha överlagringar
  • bör vara en metod
  • bör vara public
  • bör vara static
  • bör inte vara generisk
  • bör returnera string
  • ska ta exakt 2 parametrar, den första är MethodInfo och den andra är object[]

Exempel:

public static string GetDisplayName(MethodInfo methodInfo, object[] data)
{
    return string.Format("{0} ({1})", methodInfo.Name, string.Join(",", data));
}

Så här åtgärdar du överträdelser

Kontrollera att attributet matchar de villkor som beskrivs ovan.

När du ska ignorera varningar

Ignorera inte en varning från den här regeln. Om du ignorerar den här regeln hoppas flaggade instanser över eller resulterar i körningsfel.

Undertryck en varning

Om du bara vill förhindra en enda överträdelse lägger du till förprocessordirektiv i källfilen för att inaktivera och aktiverar sedan regeln igen.

#pragma warning disable MSTEST0018
// The code that's violating the rule is on this line.
#pragma warning restore MSTEST0018

Om du vill inaktivera regeln för en fil, mapp eller ett projekt anger du dess allvarlighetsgrad till none i konfigurationsfilen.

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

Mer information finns i Så här utelämnar du kodanalysvarningar.