Not
Åtkomst till denna sida kräver auktorisation. Du kan prova att logga in eller byta katalog.
Åtkomst till denna sida kräver auktorisation. Du kan prova att byta katalog.
Använd klasserna Assert i Microsoft.VisualStudio.TestTools.UnitTesting namnområdet för att verifiera specifika funktioner. En testmetod använder koden i ditt program men rapporterar endast korrekthet när du inkluderar Assert instruktioner.
Översikt
MSTest tillhandahåller tre assertklasser:
| Class | Avsikt |
|---|---|
Assert |
Allmänna försäkran för värden, typer och undantag. |
StringAssert |
Strängspecifika uttryck för mönster, delsträngar och jämförelser. |
CollectionAssert |
Säkerställanden för att jämföra och verifiera samlingar. |
Tips/Råd
När det finns funktioner i både Assert ochStringAssert/CollectionAssert , föredrar du Assert klassen. Klassen Assert ger bättre identifiering och är det rekommenderade valet för ny kod.
StringAssert och CollectionAssert underhålls för bakåtkompatibilitet.
Alla kontrollmetoder accepterar en valfri meddelandeparameter som visas när försäkran misslyckas, vilket hjälper dig att identifiera orsaken:
Assert.AreEqual(expected, actual, "Values should match after processing");
Klassen Assert
Använd klassen Assert för att kontrollera att koden som testas fungerar som förväntat.
Vanliga assertionsmetoder
[TestMethod]
public async Task AssertExamples()
{
// Equality
Assert.AreEqual(5, calculator.Add(2, 3));
Assert.AreNotEqual(0, result);
// Reference equality
Assert.AreSame(expected, actual);
Assert.AreNotSame(obj1, obj2);
// Boolean conditions
Assert.IsTrue(result > 0);
Assert.IsFalse(string.IsNullOrEmpty(name));
// Null checks
Assert.IsNull(optionalValue);
Assert.IsNotNull(requiredValue);
// Type checks
Assert.IsInstanceOfType<IDisposable>(obj);
Assert.IsNotInstanceOfType<string>(obj);
// Exception testing (MSTest v3.8+)
Assert.ThrowsExactly<ArgumentNullException>(() => service.Process(null!));
await Assert.ThrowsExactlyAsync<InvalidOperationException>(
async () => await service.ProcessAsync());
}
Tillgängliga API:er
- Assert.AreEqual
- Assert.AreNotEqual
- Assert.AreNotSame
- Assert.AreSame
- Assert.Contains
- Assert.ContainsSingle
- Assert.DoesNotContain
- Assert.DoesNotEndWith
- Assert.DoesNotMatchRegex
- Assert.DoesNotStartWith
- Assert.Fail
- Assert.HasCount
- Assert.Inconclusive
- Assert.IsEmpty
- Assert.IsFalse
- Assert.IsGreaterThan
- Assert.IsGreaterThanOrEqualTo
- Assert.IsInRange
- Assert.IsInstanceOfType
- Assert.IsLessThan
- Assert.IsLessThanOrEqualTo
- Assert.IsNegative
- Assert.IsNotEmpty
- Assert.IsNotInstanceOfType
- Assert.IsNotNull
- Assert.IsNull
- Assert.IsPositive
- Assert.IsTrue
- Assert.MatchesRegex
- Assert.StartsWith
- Assert.Throws
- Assert.ThrowsAsync
- Assert.ThrowsExactly
- Assert.ThrowsExactlyAsync
Klassen StringAssert
StringAssert Använd klassen för att jämföra och undersöka strängar.
Anmärkning
Alla StringAssert metoder har motsvarigheter i Assert klassen. Föredra Assert metoderna för bättre upptäckbarhet. Klassen StringAssert underhålls för bakåtkompatibilitet.
Tillgängliga API:er är:
- StringAssert.Contains
- StringAssert.DoesNotMatch
- StringAssert.EndsWith
- StringAssert.Matches
- StringAssert.StartsWith
Klassen CollectionAssert
CollectionAssert Använd klassen för att jämföra samlingar av objekt eller för att verifiera tillståndet för en samling.
Anmärkning
När det finns en motsvarande metod i Assert klassen (till exempel Assert.Contains, Assert.DoesNotContain) föredrar du att använda Assert för bättre identifiering. Klassen CollectionAssert underhålls främst för bakåtkompatibilitet.
Tillgängliga API:er är:
- CollectionAssert.AllItemsAreInstancesOfType
- CollectionAssert.AllItemsAreNotNull
- CollectionAssert.AllItemsAreUnique
- CollectionAssert.AreEqual
- CollectionAssert.AreEquivalent
- CollectionAssert.AreNotEqual
- CollectionAssert.AreNotEquivalent
- CollectionAssert.Contains
- CollectionAssert.DoesNotContain
- CollectionAssert.IsNotSubsetOf
- CollectionAssert.IsSubsetOf
Metodtips
Använd specifika försäkran: Föredra
AreEqualframförIsTrue(a == b)för bättre felmeddelanden.Inkludera beskrivande meddelanden: Hjälp till att snabbt identifiera fel med tydliga försäkran.
Testa en sak i taget: Varje testmetod bör verifiera ett enda beteende.
Använda
Throws/ThrowsExactlyför undantag: I MSTest v3.8+ föredrar duAssert.Throws,Assert.ThrowsExactlyoch deras asynkrona motsvarigheter (ThrowsAsync,ThrowsExactlyAsync) framförExpectedExceptionattributet.Föredra
AssertframförStringAssert/CollectionAssert: När det finns funktioner i båda klasserna använder duAssertklassen för bättre identifiering och konsekvens.
Relaterade analysverktyg
Följande analysverktyg hjälper till att säkerställa korrekt användning av försäkran:
-
MSTEST0006 – Undvik
ExpectedExceptionattribut, användAssert.Throwsmetoder i stället. - MSTEST0017 – Argument för påståenden ska skickas i rätt ordning.
- MSTEST0023 – Negera inte booleska påståenden.
-
MSTEST0025 – Föredrar
Assert.Failframför alltid falska villkor. - MSTEST0026 – Argument för försäkran bör undvika villkorlig åtkomst.
- MSTEST0032 – Granska alltid sanna assert-villkor.
- MSTEST0037 – Använd rätt kontrollmetoder.
-
MSTEST0038 – Undvik
Assert.AreSamemed värdetyper. -
MSTEST0039 – Använd nyare
Assert.Throwsmetoder. - MSTEST0040 – Undvik att använda assertioner i asynkron kontext av void.
-
MSTEST0046 – Använd
Asserti stället förStringAssert. -
-
Assert.ThrowsMSTEST0051 ska innehålla en enda instruktion. -
MSTEST0053 – Undvik
Assertformatparametrar. - MSTEST0058 – Undvik asserter i fångstblock.