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.
A Microsoft.Testing.Platform kontextusában a képesség egy adott művelet végrehajtásának vagy adott információk megadásának lehetőségére utal. A tesztelési keretrendszer és a bővítmények számára lehetővé teszi, hogy deklaráljákképességüket,bizonyos módon működjenek, vagy konkrét információkat adjanak a kérelmezőknek.
A kérelmezők lehetnek a tesztelési munkamenetben részt vevő bármely összetevő, például a platform, a bővítmény vagy maga a tesztelési keretrendszer.
A képességrendszer elsődleges célja, hogy megkönnyítse a hatékony kommunikációt a tesztelési munkamenetben részt vevő összetevők között, lehetővé téve számukra az információk exchange és az igényeik pontos kielégítését.
Irányított példa
Tekintsünk egy hipotetikus példát egy képességrendszer szükségességének szemléltetésére.
Jegyzet
Ez a példa kizárólag szemléltető célokra szolgál, és jelenleg nem implementálható a Microsoft.Testing.Platformon vagy bármely tesztelési keretrendszeren belül.
Képzeljen el egy olyan helyzetet, amelyben egy olyan bővítmény van, amely megköveteli, hogy a tesztelési keretrendszer egyszerre legfeljebb egy tesztet hajt végre. Ezenkívül az egyes tesztek után a bővítménynek ismernie kell az adott teszt processzorhasználatát.
Az előző forgatókönyvnek megfelelően a tesztelési keretrendszerből kell érdeklődnie, ha:
- Képes egyszerre csak egy tesztet végrehajtani.
- Információt nyújthat az egyes tesztek által felhasznált PROCESSZOR mennyiségéről.
Hogyan határozhatja meg a bővítmény, hogy a tesztelési keretrendszer képes-e ebben a módban működni, és hogy a tesztelési munkamenetek processzorhasználati adatait adja meg? A Microsoft.Testing.Platformban ezt a képességet a(z) Microsoft.Testing.Platform.Capabilities.ICapability interfész implementációja képviseli.
// Base capabilities contracts
public interface ICapability
{
}
public interface ICapabilities<TCapability>
where TCapability : ICapability
{
IReadOnlyCollection<TCapability> Capabilities { get; }
}
// Specific testing framework capabilities
public interface ITestFrameworkCapabilities : ICapabilities<ITestFrameworkCapability>
{
}
public interface ITestFrameworkCapability : ICapability
{
}
Mint látható, a ICapability felület egy jelölő felület, mert bármilyen képesség jelölhet, és a tényleges megvalósítás környezetfüggő lesz. Megfigyelheti a ITestFrameworkCapability-t, amely a ICapability-ből öröklődik a képesség besorolásához. A képességrendszer általános jellege lehetővé teszi a környezet szerinti csoportosítást. A ITestFrameworkCapability a tesztelési keretrendszeráltal implementált összes képességet csoportosítja. A ICapabilities<TCapability> felület megjeleníti a bővítmény által implementált összes képesség készletét. Az alaprendszerhez hasonlóan létezik egy ITestFrameworkCapabilitiesnevű környezetspecifikus tesztelési keretrendszer is. A ITestFrameworkCapabilities a tesztelési keretrendszer regisztrációs folyamat során biztosítják a platformnak.
Ha olyan képességet szeretne létrehozni, amely megfelel a fent említett forgatókönyvnek, az alábbiak szerint határozza meg:
public interface IDisableParallelismCapability : ITestFrameworkCapability
{
bool CanDisableParallelism { get; }
bool CanProvidePerTestCpuConsumption { get; }
void Enable();
}
Ha a tesztelési keretrendszer implementálja ezt az interfészt, futásidőben az alábbiak kérdezhetők le:
- Ellenőrizze, hogy a tesztelési keretrendszer képes-e kikapcsolni a párhuzamosságot
CanDisableParallelism = true. - Állapítsa meg, hogy a tesztelési keretrendszer képes-e processzorhasználati adatokat szolgáltatni
CanProvidePerTestCPUConsumption = true. - Kérje meg a tesztadaptert, hogy aktiválja ezt a módot a
Enable()metódus meghívásával a tesztelési munkamenet megkezdése előtt.
A bővítmény hipotetikus kódtöredéke a következőhöz hasonló lehet:
IServiceProvider provider = null; // TODO: Get IServiceProvider.
var capabilities = serviceProvider.GetRequiredService<ITestFrameworkCapabilities>();
// Utilize the `GetCapability` API to search for the specific capability to query.
var capability = capabilities.GetCapability<IDisableParallelismCapability>();
if (capability is null)
{
// Capability not supported...
}
else
{
capability.Enable();
if (capability.CanDisableParallelism)
{
// Do something...
}
if (capability.CanProvidePerTestCpuConsumption)
{
// Do something...
}
}
Az előző példa bemutatja, hogy a képességinfrastruktúra hogyan teszi lehetővé a képességek hatékony kommunikációjának mechanizmusát a tesztelési munkamenetben részt vevő összetevők között. Bár a minta egy kifejezetten a tesztelési keretrendszerhez tervezett képességet mutat be, bármely összetevő közzéteheti és implementálhatja a ICapabilityöröklő bővítményeket.
Nyilvánvaló, hogy nem minden részletet lehet kommunikálni egy felületen keresztül. Az előző példát figyelembe véve mire számíthat a bővítmény, ha a CanProvidePerTestCpuConsumption támogatott? Milyen típusú egyéni információkat kell továbbítani a tesztelési keretrendszer IMessageBus keresztül? A megoldás a képesség dokumentációja. A képesség tulajdonosának a felelőssége, hogy a lehető legnyilvánvalóbb módon tervezze meg, szállítsa és dokumentálja azt, hogy segítse azoknak az implementátoroknak a munkáját, akik hatékonyan szeretnének együttműködni a szükséges képességet igénylő bővítménnyel.
A TRX jelentésbővítmény például lehetővé teszi, hogy a tesztelési keretrendszer megvalósítsa a TRX-jelentések pontos létrehozásához szükséges képességet. A regisztrálandó bővítmény szerepel a https://www.nuget.org/packages/Microsoft.Testing.Extensions.TrxReport NuGet-csomagban, de a megvalósítás képessége csak a NuGet-csomag szerződésben található.
Összefoglalva összefoglaljuk a képességrendszer elsődleges szempontjait:
- Elengedhetetlen az összetevők közötti egyértelmű és stabil kommunikáció megkönnyítéséhez.
- Minden képességnek örökölnie kell
ICapability-t vagy egy olyan interfészt, amely tőle öröklődik, és egyICapabilitiesinterfészen keresztüli gyűjteményben kell elérhetővé tenni. - Segít a funkciók továbbfejlesztésében anélkül, hogy jelentős változásokat okozna. Ha egy bizonyos képesség nem támogatott, megfelelő intézkedést lehet tenni.
- A képesség használatának megtervezéséért, szállításáért és dokumentálásáért a képességtulajdonosa felelős. A Microsoft.Testing.Platform ugyanúgy rendelkezhet képességgel, mint bármely más bővítmény.
Keretrendszer képességei
A platform egy ITestFrameworkCapability nevű speciális felületet tesz elérhetővé, amely a tesztelési keretrendszerekhez elérhető összes képesség alapja. Ezek a képességek akkor érhetők el, ha regisztrálni a tesztelési keretrendszert a platform.
IBannerMessageOwnerCapability
Választható tesztelési keretrendszer képessége, amely lehetővé teszi, hogy a tesztelési keretrendszer a transzparens üzenetet küldje el a platformnak. Ha az üzenet null, vagy ha a képesség nem jelenik meg, a platform az alapértelmezett szalagcímüzenetet fogja használni.
Ez a képesség-implementáció lehetővé teszi, hogy elvonja a tesztelési keretrendszer által figyelembe veendő különböző feltételeket, amikor eldönti, hogy megjelenjen-e a szalagcím üzenete.
A platform elérhetővé teszi a IPlatformInformation szolgáltatást, hogy nyújtson néhány információt a platformról, amely hasznos lehet, amikor az egyéni szalagcímüzenetét hozza létre.