TESTOVÁNÍ JEDNOTEK v Asp.Net: Kompletní návod
⚡ Chytré shrnutí
Jednotkové testování ASP.NET aplikace ve Visual Studiu začíná projektem jednotkového testu, propojuje odkaz s cílovým projektem, přidává atributy MSTest [TestClass] a [TestMethod] a volá metody Assert, aby se ověřilo, že se třídy chovají tak, jak byly navrženy.
Testování je základním aspektem každého programovacího jazyka. Testování pro ASP.NET aplikace je to možné s pomocí Visual Studia.
Visual Studio se používá k vytváření testovacího kódu. Používá se také ke spuštění testovacího kódu pro ASP.NET aplikaci. Tímto způsobem je snadné kontrolovat chyby v ASP.NET aplikaci. Ve Visual Studiu je testovací modul dodáván s předpřipravenými funkcemi. Lze okamžitě provést test pro ASP.NET projekt.
Úvod do testování pro ASP.NET
První úrovní testování projektu ASP.NET je testování na úrovni jednotek. Tímto testem se testuje funkčnost aplikace. Testování se provádí za účelem zajištění toho, aby se aplikace chovala očekávaným způsobem. V ASP.NET je prvním úkolem vytvoření testovacího projektu ve Visual Studiu. Testovací projekt bude obsahovat potřebný kód pro testování aplikace.
Podívejme se na níže uvedenou webovou stránku. Na stránce máme zprávu „Guru99 – Zobrazí se „ASP.NET“. Jak nyní můžeme ověřit, zda se při spuštění projektu ASP.NET zobrazí správná zpráva? To se provádí přidáním testovacího projektu do řešení ASP.NET (používaného k vývoji webových aplikací). Tento testovací projekt by zajistil, že se uživateli zobrazí správná zpráva.
Pojďme se nyní podívat podrobněji a zjistit, jak můžeme pracovat na testování v ASP.NET.
Vytvoření projektu testování jednotek .NET
Než vytvoříme testovací projekt, musíme provést níže uvedené kroky na vysoké úrovni.
- Použijte naši 'Demoaplikaci' použitou v předchozích částech. Toto bude naše aplikace, kterou je třeba otestovat.
- Do DemoApplication přidáme novou třídu. Tato třída bude obsahovat řetězec s názvem 'Guru99 – ASP.NET. Tento řetězec bude testován v našem testovacím projektu.
- Nakonec vytvoříme testovací projekt. Ten bude použit k otestování ASP.NET aplikace.
Pojďme se tedy řídit výše uvedenými kroky na vysoké úrovni a podívat se, jak implementovat testování.
Krok 1) Ujistěte se, že je DemoApplication otevřená ve Visual Studiu.
Krok 2) Nyní přidejme do DemoApplication novou třídu. Tato třída bude obsahovat řetězec s názvem 'Guru99 – ASP.NET. Tento řetězec bude testován v našem testovacím projektu.
Chcete-li přidat novou třídu, postupujte podle níže uvedených kroků.
- V aplikaci Visual Studio klikněte pravým tlačítkem na 'DemoApplication' v Průzkumníku řešení.
- Vyberte možnost Přidat->Třída z kontextové nabídky.
Krok 3) V tomto kroku,
- Pojmenujte novou třídu „Tutorial.cs“.
- Kliknutím na tlačítko 'Přidat' přidáte soubor do DemoApplication.
Nyní je do souboru „DemoApplication“ přidána nová třída.
Krok 4) Otevřete nový soubor Tutorial.cs z „DemoApplication“. Přidejte řetězec „Guru99 – ASP.NET.
Chcete-li soubor otevřít, poklepejte na soubor Tutorial.cs v Průzkumníku řešení.
Soubor bude mít již napsaný nějaký výchozí kód. S tímto kódem se neobtěžujte, stačí přidat níže uvedený řádek kódu.
namespace DemoApplication { public class Tutorial { public String Name; public Tutorial() { Name = "Guru99 - ASP.Net"; } } }
Code Vysvětlení:-
- Proměnná Name je typu string.
- Nakonec v konstruktoru třídy Tutorial přiřaďte hodnotu proměnné Name. Hodnota je přiřazena k „Guru99 – ASP.NET”
Krok 5) Nyní přejděte do souboru demo.aspx a přidejte řádky kódu pro zobrazení textu „Guru99 – ASP.NET.
<!DOCTYPE html> <html xmlns="http://www.w3.org/1999/xhtml"> <head runat="server"> <title></title> </head> <body> <form id="form1" runat="server"> <div> <% DemoApplication.Tutorial tp=new DemoApplication.Tutorial();%> <%=tp.Name%> </div> </form> </body> </html>
Code Vysvětlení:-
- První řádek vytvoří objekt třídy 'Tutorial'. Toto je první krok při práci s třídami a objekty. Objekt bude pojmenován 'tp'.
- Nakonec zavoláme 'tutorial.cs' ze souboru demo.aspx. Zobrazuje hodnotu proměnné Name.
Když výše uvedený program spustíte v sadě Visual Studio, získáte následující výstup.
Výstup:-
Z výstupu se zobrazí zpráva „Guru99 – Zobrazí se „ASP.NET“.
Krok 6) Nyní přidejme náš testovací projekt do demo aplikace. To se provádí pomocí Visual Studia.
- Klepněte pravým tlačítkem myši na Řešení – DemoApplication.
- V kontextovém menu zvolte možnost 'Nový projekt'.
Krok 7) Tento krok zahrnuje přidání projektu Unit Test do demo aplikace.
- Klikněte na typ položky jako „Test“ na levém panelu.
- Vyberte položku jako 'Unit Test Project' ze seznamu, který se objeví ve střední části dialogového okna.
- Zadejte název testovacího projektu. V našem případě je daný název 'DemoTest'.
- Nakonec klikněte na tlačítko 'OK'.
Nakonec uvidíte projekt DemoTest přidaný do průzkumníka řešení. Díky tomu můžete také vidět další soubory jako UnitTest1.cs, vlastnosti atd. jsou generovány ve výchozím nastavení.
Spuštění testovacího projektu
Testovací projekt vytvořený v předchozí části se používá k testování naší ASP.NET aplikace. V následujících krocích se podíváme, jak spustit testovací projekt.
- Prvním krokem by bylo přidání odkazu na projekt ASP.NET. Tento krok se provádí proto, aby testovací projekt měl přístup k projektu ASP.NET.
- Poté napíšeme náš testovací kód.
- Nakonec spustíme test pomocí Visual Studia.
Krok 1) Chcete-li otestovat naši ukázkovou aplikaci, musí první testovací projekt odkazovat na ukázkovou aplikaci. Přidejte odkaz na řešení Demo.aspx.
- Klepněte pravým tlačítkem myši na projekt Demo Test
- Z nabídky vyberte možnost Přidat->Reference.
Krok 2) Dalším krokem je přidání odkazu na DemoApplication.
- Vyberte možnost Projekty na levé straně dialogového okna
- Klikněte na zaškrtávací políčko vedle DemoApplication
- Klikněte na tlačítko 'OK'.
To umožní demotestovému projektu otestovat naši DemoApplication.
Krok 3) Nyní je čas přidat testovací kód do našeho testovacího projektu.
- Nejprve dvakrát klikněte na soubor UnitTest1 (soubor UnitTest1 je automaticky přidán aplikací Visual Studio při vytvoření projektu Test) v Průzkumníku řešení.
- Toto je soubor, který bude spuštěn pro otestování projektu ASP.NET.
Níže uvedený kód přidaný aplikací Visual Studio uvidíte v souboru UnitTest1.cs. Toto je základní kód potřebný pro spuštění testovacího projektu.
Krok 4) Dalším krokem je přidání kódu, který se používá k testování řetězce „Guru99 – ASP.NET.
using System; using Microsoft.VisualStudio.TestTools.UnitTesting; using DemoApplication; namespace DemoTest { [TestClass] public class UnitTest1 { [TestMethod] public void TestMethod1() { Tutorial tp = new Tutorial(); Assert.AreEqual(tp.Name,"Guru99 - ASP.Net"); } } }
- Vytvořte nový objekt s názvem 'tp' typu Tutorial
- Metoda Assert.AreEqual se v .NET používá k testování, zda je hodnota rovna něčemu. V našem případě tedy porovnáváme hodnoty tp.Name s Guru99 – ASP.NET.
Krok 5) Nyní spusťme náš testovací projekt. K tomu musíme přejít do nabídky Test->Spustit->Všechny testy
Výstup:-
Ve Visual Studiu se zobrazí okno testovacího Průzkumníka. Tím se zobrazí výše uvedený výsledek a zobrazí se, že v aplikaci Visual Studio byl spuštěn úspěšný test.
Atributy a assertace MSTest, které budete používat
Jedno MicrosoftJmenný prostor .VisualStudio.TestTools.UnitTesting nabízí malou sadu atributů a asercí, které pokrývají většinu jednotkových testů ASP.NET. Pokud se nejprve naučíte tyto atributy, každý další test se snáze čte a spravuje.
- [Testovací třída] – označí třídu jako kontejner testů. MSTest prohledává třídy s tímto atributem v době objevování.
- [Testovací metoda] – označuje veřejnou metodu bez parametrů jako individuální test. Metoda vrací void, Task nebo ValueTask.
- [Inicializace testu] / [Vyčištění testu] – spouštějí se před a po každé testovací metodě. Používejte je k vytvoření a odstranění sdíleného nastavení, jako je například simulované repozitář nebo kontext v paměti.
- [Inicializace třídy] / [Vyčištění třídy] – spouštějí se jednou pro celou třídu. Jsou užitečné, když je nastavení nákladné, například při nastavování testovací databáze.
- [Řadek dat] a [Metoda testu dat] – dodávat parametrizované vstupy, aby jedna zkušební metoda pokrývala několik případů.
Uvnitř každé testovací metody třída Assert kontroluje výsledek. Mezi běžná volání patří Assert.AreEqual pro porovnávání hodnot, Assert.IsTrue a Assert.IsFalse pro booleovské hodnoty, Assert.IsNull a Assert.IsNotNull pro reference a Assert.ThrowsException pro očekávané výjimky. Každý test strukturujte pomocí vzoru Arrange, Act, Assert tak, aby nastavení, vyvolání a ověřování zůstaly vizuálně oddělené. Toto rozvržení usnadňuje ladění neúspěšných testů, protože řádek s neúspěšným testem je téměř vždy jediný Assert dole.
Porovnání MSTest, NUnit a xUnit pro ASP.NET
Ekosystému .NET dominují tři testovací frameworky. Každý z nich běží v rámci Visual Studia a integruje se s dotnet test, takže rozdíl spočívá především ve stylu, podpoře komunity a výchozím chování.
- MSTest – odesláno společností Microsoft a je dodáván s předinstalovanou šablonou projektu pro testování jednotek sady Visual Studio, která byla použita dříve v tomto tutoriálu. Je to nejbezpečnější výchozí nastavení, když je tým v testování jednotek nový. Microsoft zásobník.
- NUjednotka – nejstarší ze tří, původně přenesený z JUnitNabízí bohatý model omezení, parametrizované testy prostřednictvím TestCase a TestCaseSource a rozvinutou podporu napříč všemi verzemi .NET.
- xUnit.net – používá se interně týmy ASP.NET Core a Entity Framework Core. Nahrazuje metodu SetUp konstruktorem a IDisposable, podporuje jednu testovací třídu na chování a používá [Fact] a [Theory] místo [TestMethod].
Všechny tři frameworky vyhledávají testy prostřednictvím atributů, spouštějí je pomocí příkazu dotnet test a vytvářejí XML sestavy trx nebo xUnit, které CI kanály, jako například Azure DevOps, akce GitHubu a Jenkins lze přímo spotřebovávat. Pro první ASP.NET projekt udržuje MSTest jednoduchý nástrojový řetězec. Týmy, které chtějí bohatší parametrizaci nebo již používají ASP.NET Core, si často vybírají xUnit kvůli konzistenci s frameworkem, ve kterém byl vytvořen.
Nejlepší postupy pro jednotkové testování aplikací ASP.NET
Dodržování malého souboru návyků udržuje sadu rychlou, spolehlivou a užitečnou po celou dobu trvání projektu ASP.NET.
- Otestujte jedno chování na metodu. Test, který tvrdí několik nesouvisejících věcí, selže z mnoha důvodů a jeho oprava trvá déle.
- Pojmenujte testy podle záměru. Vzor, jako například MethodUnderTest_Scenario_ExpectedResult, vytváří z výstupu Průzkumníka testů čitelnou specifikaci třídy.
- Izolujte jednotku od externích systémů. Zabalte volání souborů, sítě a databáze za rozhraní a nahraďte je falešnými nebo mockovými kódy, aby test nenarazil na skutečnou závislost.
- Udržujte testy rychlé. Snažte se, aby celá sada jednotek byla dokončena během několika sekund. Pomalé testy se přeskakují a přeskakované testy skrývají regrese.
- Řiďte se rozložením Uspořádat, Provést akci, Prosadit. Tři krátké bloky s prázdnými řádky mezi nimi signalizují záměr a usnadňují odhalení chybných řádků.
- Spusťte testy na každém commitu. Propojení testu DotNet s kanálem CI, aby poškozený test blokoval sloučení místo odeslání.ping do výroby.
- Tracpokrytí kódu k, ale nehoňte se za ním. Pokrytí zdůrazňuje neprověřené cesty, ale vysoký počet sám o sobě nezaručuje kvalitu. Revpodívejte se, co chybějící řádky skutečně dělají.
Společně tyto postupy proměňují výše uvedený projekt DemoTest v základ sady, která zachycuje regrese při každém odeslání, dokumentuje chování pro budoucí vývojáře a dodává jistotu při refaktorování ASP.NET aplikace.


















