Delen via


MSTEST0018: DynamicData moet geldig zijn

Eigenschappen Weergegeven als
Regel-id MSTEST0018
Titel DynamicData moet geldig zijn
Categorie Gebruik
Oplossing is brekend of niet-brekend Niet-brekend
Standaard ingeschakeld Ja
Standaard ernst Waarschuwing
Geïntroduceerd in versie 3.6.0

Oorzaak

Een methode die is gemarkeerd met [DynamicData] moet een geldige indeling hebben.

Beschrijving van regel

Methoden die zijn gemarkeerd met [DynamicData] , moeten ook worden gemarkeerd met [TestMethod] (of een afgeleid kenmerk).

Het lid van de gegevensbron waarnaar wordt verwezen:

  • moet bestaan op het opgegeven type (huidige klasse als er geen type is opgegeven)
  • mag geen overbelastingen hebben
  • moet van hetzelfde type zijn (methode of eigenschap) als de DataSourceType eigenschap
  • moet zijn public
  • moet zijn static
  • mag niet algemeen zijn
  • moet parameterloos zijn
  • moet retourneren IEnumerable<object[]>, IEnumerable<Tuple<T,...>> of IEnumerable<ValueTuple<,...>>

Het lid 'weergavenaam' waarnaar wordt verwezen:

  • moet bestaan op het opgegeven type (huidige klasse als er geen type is opgegeven)
  • mag geen overbelastingen hebben
  • moet een methode zijn
  • moet zijn public
  • moet zijn static
  • mag niet algemeen zijn
  • moet retourneren string
  • moet exact 2 parameters, het eerste en MethodInfo het tweede zijn object[]

Voorbeeld:

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

Schendingen oplossen

Zorg ervoor dat het kenmerk overeenkomt met de hierboven beschreven voorwaarden.

Wanneer waarschuwingen onderdrukken

Een waarschuwing van deze regel niet onderdrukken. Als u deze regel negeert, worden gemarkeerde exemplaren overgeslagen of leiden ze tot runtimefouten.

Een waarschuwing onderdrukken

Als u slechts één schending wilt onderdrukken, voegt u preprocessorrichtlijnen toe aan uw bronbestand om de regel uit te schakelen en vervolgens opnieuw in te schakelen.

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

Als u de regel voor een bestand, map of project wilt uitschakelen, stelt u de ernst ervan in op none in het configuratiebestand.

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

Zie Hoe codeanalysewaarschuwingen onderdrukkenvoor meer informatie.