Megjegyzés
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhat bejelentkezni vagy módosítani a címtárat.
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhatja módosítani a címtárat.
Az Microsoft.VisualStudio.TestTools.UnitTesting névtér Assert osztályait használja az egyes funkciók ellenőrzésére. Egy tesztmetódus lefuttatja a kódot az alkalmazásban, de csak akkor jelez helyességet, ha a szükséges utasításokat is tartalmazza Assert.
Áttekintés
Az MSTest három állítási osztályt biztosít:
| Class | Cél |
|---|---|
Assert |
Általános célú állítások értékekhez, típusokhoz és kivételekhez. |
StringAssert |
Sztringspecifikus állítások mintákhoz, részsztringekhez és összehasonlításokhoz. |
CollectionAssert |
Gyűjtemény-állítások a gyűjtemények összehasonlításához és érvényesítéséhez. |
Jótanács
Ha a funkció létezik mind a Assert-ban, mind a StringAssert/CollectionAssert-ban, akkor az Assert osztályt kell előnyben részesíteni. Az Assert osztály jobb felderíthetőséget biztosít, és az új kódhoz ajánlott választás.
StringAssert és CollectionAssert a visszamenőleges kompatibilitás érdekében megmaradnak.
Minden helyességi metódus elfogad egy opcionális üzenetparamétert, amely az állítás meghiúsulásakor jelenik meg, és segít azonosítani az okot:
Assert.AreEqual(expected, actual, "Values should match after processing");
Az Assert osztály
A Assert osztály használatával ellenőrizze, hogy a vizsgált kód a várt módon működik-e.
Gyakori állítási módszerek
[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());
}
Elérhető API-k
- 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
Az StringAssert osztály
A StringAssert osztály segítségével összehasonlíthatja és megvizsgálhatja a sztringeket.
Megjegyzés:
A StringAssert osztályban minden Assert metódus rendelkezik megfelelővel. A jobb felderíthetőség érdekében előnyben részesítse a Assert módszereket. Az StringAssert osztály megmarad a visszamenőleges kompatibilitás érdekében.
Az elérhető API-k a következők:
- StringAssert.Contains
- StringAssert.DoesNotMatch
- StringAssert.EndsWith
- StringAssert.Matches
- StringAssert.StartsWith
Az CollectionAssert osztály
Az osztály használatával CollectionAssert összehasonlíthatja az objektumgyűjteményeket, vagy ellenőrizheti a gyűjtemény állapotát.
Megjegyzés:
Ha az Assert osztályban létezik egy egyenértékű metódus (például Assert.Contains, Assert.DoesNotContain), akkor a jobb felderíthetőség érdekében inkább használja a Assert metódust. Az CollectionAssert osztály elsősorban a visszamenőleges kompatibilitás érdekében van fenntartva.
Az elérhető API-k a következők:
- CollectionAssert.AllItemsAreInstancesOfType
- CollectionAssert.AllItemsAreNotNull
- CollectionAssert.AllItemsAreUnique
- CollectionAssert.AreEqual
- CollectionAssert.AreEquivalent
- CollectionAssert.AreNotEqual
- CollectionAssert.AreNotEquivalent
- CollectionAssert.Contains
- CollectionAssert.DoesNotContain
- CollectionAssert.IsNotSubsetOf
- CollectionAssert.IsSubsetOf
Ajánlott eljárások
Konkrét állítások használata: Előnyben részesítheti
AreEqualIsTrue(a == b)a jobb hibaüzeneteket.Leíró üzenetek belefoglalása: Segítség a hibák gyors azonosításához egyértelmű helyességi üzenetekkel.
Egyszerre egy dolog tesztelése: Minden tesztmetódusnak egyetlen viselkedést kell ellenőriznie.
Használja
Throws/ThrowsExactlykivételek esetén: Az MSTest 3.8+-os verzióban előnyben részesítseAssert.Throwsa ,Assert.ThrowsExactlyés az aszinkron megfelelőiket (ThrowsAsync,ThrowsExactlyAsync) azExpectedExceptionattribútummal szemben.Előnyben részesítse a
Assert-t aStringAssert/CollectionAssert-vel szemben: Ha a funkciók mindkét osztályban léteznek, használja aAssertosztályt a jobb felderíthetőség és konzisztencia érdekében.
Kapcsolódó elemzők
A következő elemzők biztosítják az állítások megfelelő használatát:
-
MSTEST0006 – Kerülje az
ExpectedExceptionattribútumot, használjonAssert.Throwsinkább metódusokat. - MSTEST0017 – Az argumentumokat a megfelelő sorrendben kell átadni.
- MSTEST0023 – Ne tagadja meg a logikai feltételeket.
-
MSTEST0025 - Előnyben részesítse a
Assert.Fail-t a mindig hamis feltételek helyett. - MSTEST0026 – Az állítási argumentumoknak kerülnie kell a feltételes hozzáférést.
- MSTEST0032 – Mindig igaz állítási feltételek áttekintése.
- MSTEST0037 – Használjon megfelelő érvényesítési módszereket.
-
MSTEST0038 – Kerülje
Assert.AreSameaz értéktípusokat. -
MSTEST0039 – Újabb metódusok használata
Assert.Throws. - MSTEST0040 – Az aszinkron érvénytelen környezetben ne használjon érvényességeket.
-
MSTEST0046 – Használat
AsserthelyettStringAssert. -
-
Assert.ThrowsMSTEST0051 egyetlen utasítást kell tartalmaznia. -
MSTEST0053 – Kerülje a
Assertformázási paramétereket. - MSTEST0058 – Kerülje az állításokat a fogási blokkokban.