Anteckning
Åtkomst till den här sidan kräver auktorisering. Du kan prova att logga in eller ändra kataloger.
Åtkomst till den här sidan kräver auktorisering. Du kan prova att ändra kataloger.
| Fastighet | Värde |
|---|---|
| Regel-ID | MSTEST0052 |
| Titel | Undvik att skicka en explicit "DynamicDataSourceType" och använd standardbeteendet för automatisk identifiering |
| Kategori | Usage |
| Korrigeringen är icke-bakåtkompatibel | Icke-icke-bryta |
| Aktiverad som standard | Yes |
| Standard allvarlighetsgrad | Varning |
| Introducerad i version | 3.11.0 |
| Finns det en kodkorrigering | Yes |
Orsak
A DynamicDataAttribute anger Property uttryckligen eller Method i stället för att använda standardvärdet AutoDetect.
Regelbeskrivning
Från och med MSTest 3.8 DynamicDataSourceType.AutoDetect är standardvärdet för parametern DynamicDataSourceTypeDynamicDataAttribute i konstruktorn. Den här förbättringen identifierar automatiskt om datakällan är en egenskap, metod eller ett fält, vilket eliminerar behovet av att uttryckligen ange källtypen. Med hjälp av AutoDetect görs koden mer underhållsbar och minskar ordrikedomen.
Så här åtgärdar du överträdelser
Ta bort den explicita DynamicDataSourceType parametern DynamicData från attributet och låt ramverket identifiera källtypen automatiskt.
Ändra till exempel följande:
public static IEnumerable<object[]> TestData { get; } = new[]
{
new object[] { 1, 2, 3 },
new object[] { 4, 5, 9 }
};
[TestMethod]
[DynamicData(nameof(TestData), DynamicDataSourceType.Property)]
public void TestMethod(int a, int b, int expected)
{
Assert.AreEqual(expected, a + b);
}
Så här gör du:
public static IEnumerable<object[]> TestData { get; } = new[]
{
new object[] { 1, 2, 3 },
new object[] { 4, 5, 9 }
};
[TestMethod]
[DynamicData(nameof(TestData))]
public void TestMethod(int a, int b, int expected)
{
Assert.AreEqual(expected, a + b);
}
När du ska ignorera varningar
Ignorera inte varningar från den här regeln. Om du följer analysförslaget leder det till mindre brus i testkoden.