TESTOWANIE JEDNOSTKOWE w Asp.Net: kompletny samouczek

โšก Inteligentne podsumowanie

Testowanie jednostkowe aplikacji ASP.NET w programie Visual Studio rozpoczyna siฤ™ od projektu testu jednostkowego, po ktรณrym nastฤ™puje odwoล‚anie do projektu docelowego, dodanie atrybutรณw MSTest [TestClass] i [TestMethod] oraz wywoล‚anie metod Assert w celu udowodnienia, ลผe โ€‹โ€‹klasy zachowujฤ… siฤ™ zgodnie z zaล‚oลผeniami.

  • ๐Ÿงช Projekt testowy: Dodaj projekt testu jednostkowego do rozwiฤ…zania ASP.NET i odwoล‚aj siฤ™ do projektu docelowego, ktรณry chcesz zweryfikowaฤ‡.
  • ๐Ÿท๏ธ Atrybuty: Oznacz klasฤ™ za pomocฤ… [TestClass], a kaลผdy test za pomocฤ… [TestMethod], aby MSTest mรณgล‚ je wykryฤ‡.
  • โœ… Asercje: Uลผyj wywoล‚aล„ Assert.AreEqual, Assert.IsTrue i podobnych, aby zadeklarowaฤ‡ oczekiwany wynik kaลผdego testu.
  • โ–ถ ๏ธ Uruchom testy: Menu Wykonaj test Uruchom wszystkie testy w programie Visual Studio i sprawdลบ w Eksploratorze testรณw, czy testy zakoล„czyล‚y siฤ™ sukcesem, czy niepowodzeniem.
  • โš–๏ธ. Wybรณr frameworka: MSTest, NUnit i xUnit wspรณล‚pracujฤ… z dotnet test; MSTest jest dostarczany domyล›lnie, w przypadku ASP.NET Core preferowany jest xUnit.
  • ๐Ÿ› ๏ธ. Najlepsze praktyki: Wyizoluj jednostkฤ™, postฤ™puj zgodnie z poleceniami Arrange Act Assert i dbaj o to, aby caล‚y pakiet dziaล‚aล‚ szybko, tak aby dziaล‚aล‚ przy kaลผdym zatwierdzeniu.

Testowanie jednostkowe w ASP.NET

Testowanie jest istotnym aspektem kaลผdego jฤ™zyka programowania. Testy w przypadku aplikacji ASP.NET jest moลผliwe przy pomocy programu Visual Studio.

Visual Studio sล‚uลผy do tworzenia kodu testowego. Sล‚uลผy rรณwnieลผ do uruchamiania kodu testowego aplikacji ASP.NET. W ten sposรณb moลผna ล‚atwo sprawdziฤ‡ ewentualne bล‚ฤ™dy w aplikacji ASP.NET. W Visual Studio moduล‚ testowania jest dostฤ™pny od razu po instalacji. Moลผna natychmiast przeprowadziฤ‡ test dla projektu ASP.NET.

Wprowadzenie do testowania dla ASP.NET

Pierwszym poziomem testowania projektu ASP.NET jest testowanie na poziomie jednostkowym. Test ten sprawdza funkcjonalnoล›ฤ‡ aplikacji. Testowanie przeprowadza siฤ™ w celu upewnienia siฤ™, ลผe aplikacja dziaล‚a zgodnie z oczekiwaniami. W ASP.NET pierwszym zadaniem jest utworzenie projektu testowego w programie Visual Studio. Projekt testowy bฤ™dzie zawieraล‚ kod niezbฤ™dny do przetestowania aplikacji.

Rozwaลผmy poniลผszฤ… stronฤ™ internetowฤ…. Na stronie znajduje siฤ™ komunikat โ€žGuru99 โ€“ Wyล›wietlany jest komunikat โ€žASP.NETโ€. Jak moลผemy potwierdziฤ‡, ลผe po uruchomieniu projektu ASP.NET wyล›wietlany jest prawidล‚owy komunikat? Moลผna to zrobiฤ‡, dodajฤ…c projekt testowy do rozwiฤ…zania ASP.NET (uลผywanego do tworzenia aplikacji internetowych). Ten projekt testowy zapewni wyล›wietlanie uลผytkownikowi prawidล‚owego komunikatu.

Wprowadzenie do testowania dla ASP.NET

Przyjrzyjmy siฤ™ teraz bliลผej, aby zobaczyฤ‡, jak moลผna pracowaฤ‡ nad testowaniem w ASP.NET.

Tworzenie projektu testรณw jednostkowych .NET

Zanim utworzymy projekt testowy, musimy wykonaฤ‡ poniลผsze kroki ogรณlne.

  1. Skorzystaj z naszej โ€žDemoAplikacjiโ€ uลผytej we wczeล›niejszych sekcjach. To bฤ™dzie nasza aplikacja, ktรณrฤ… trzeba przetestowaฤ‡.
  2. Dodamy nowฤ… klasฤ™ do DemoApplication. Ta klasa bฤ™dzie zawieraฤ‡ ciฤ…g znakรณw o nazwie โ€žGuru99 โ€“ ASP.NET. Ten ciฤ…g znakรณw zostanie przetestowany w naszym projekcie testowym.
  3. Na koniec utworzymy projekt testowy, ktรณry posล‚uลผy do przetestowania aplikacji ASP.NET.

Przeanalizujmy zatem powyลผsze kroki ogรณlne i zobaczmy, jak wdroลผyฤ‡ testowanie.

Krok 1) Upewnij siฤ™, ลผe aplikacja DemoApplication jest otwarta w programie Visual Studio.

Krok 2) Dodajmy teraz nowฤ… klasฤ™ do DemoApplication. Klasa ta bฤ™dzie zawieraฤ‡ ciฤ…g znakรณw o nazwie โ€žGuru99 โ€“ ASP.NET. Ten ciฤ…g znakรณw zostanie przetestowany w naszym projekcie testowym.

Wykonaj poniลผszy krok, aby dodaฤ‡ nowฤ… klasฤ™.

Tworzenie projektu testรณw jednostkowych .NET

  1. W programie Visual Studio kliknij prawym przyciskiem myszy pozycjฤ™ โ€žDemoApplicationโ€ w Eksploratorze rozwiฤ…zaล„.
  2. Z menu kontekstowego wybierz opcjฤ™ Dodaj->Klasa.

Krok 3) W tym etapie,

Tworzenie projektu testรณw jednostkowych .NET

  1. Nadaj nowej klasie nazwฤ™ โ€žTutorial.csโ€.
  2. Kliknij przycisk โ€žDodajโ€, aby dodaฤ‡ plik do aplikacji DemoApplication.

Teraz do pliku โ€žDemoApplicationโ€ dodana zostaล‚a nowa klasa.

Krok 4) Otwรณrz nowy plik Tutorial.cs z โ€žDemoApplicationโ€. Dodaj ciฤ…g โ€žGuru99 โ€“ ASP.NET.โ€

Aby otworzyฤ‡ plik, kliknij dwukrotnie plik Tutorial.cs w Eksploratorze rozwiฤ…zaล„.

Tworzenie projektu testรณw jednostkowych .NET

Plik bฤ™dzie miaล‚ juลผ zapisany domyล›lny kod. Nie przejmuj siฤ™ tym kodem, po prostu dodaj poniลผszฤ… liniฤ™ kodu.

Tworzenie projektu testรณw jednostkowych .NET

namespace DemoApplication
{
  public class Tutorial
  {
     public String Name;
     public Tutorial()
     {
        Name = "Guru99 - ASP.Net";
     }
  }
}

Code Wyjaล›nienie:-

  1. Zmienna Nazwa jest typu string.
  2. Na koniec konstruktor klasy Tutorial przypisuje wartoล›ฤ‡ zmiennej Name. Wartoล›ฤ‡ ta jest przypisywana do โ€žGuru99 โ€“ ASP.NETโ€

Krok 5) Teraz przejdลบ do pliku demo.aspx i dodaj wiersze kodu, aby wyล›wietliฤ‡ tekst โ€žGuru99 โ€“ ASP.NET.โ€

Tworzenie projektu testรณw jednostkowych .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 Wyjaล›nienie:-

  1. Pierwszy wiersz tworzy obiekt klasy โ€žTutorialโ€. To pierwszy krok w pracy z klasami i obiektami. Nazwa nadana obiektowi to โ€žtpโ€.
  2. Na koniec wywoล‚ujemy โ€žtutorial.csโ€ z pliku demo.aspx. Wyล›wietla wartoล›ฤ‡ zmiennej Nazwa.

Po uruchomieniu powyลผszego programu w programie Visual Studio otrzymasz nastฤ™pujฤ…cy wynik.

Wynik:-

Tworzenie projektu testรณw jednostkowych .NET

Na wyjล›ciu zobaczysz komunikat โ€žGuru99 โ€“ Wyล›wietlono โ€žASP.NETโ€.

Krok 6) Teraz dodajmy nasz projekt testowy do aplikacji demonstracyjnej. Zrobimy to za pomocฤ… Visual Studio.

Tworzenie projektu testรณw jednostkowych .NET

  1. Kliknij prawym przyciskiem myszy Rozwiฤ…zanie โ€“ DemoApplication.
  2. W menu kontekstowym wybierz opcjฤ™ โ€žNowy projektโ€.

Krok 7) Krok polega na dodaniu projektu Unit Test do aplikacji demonstracyjnej.

Tworzenie projektu testรณw jednostkowych .NET

  1. Kliknij typ elementu jako โ€žTestโ€ w panelu po lewej stronie.
  2. Z listy znajdujฤ…cej siฤ™ w ล›rodkowej czฤ™ล›ci okna dialogowego wybierz pozycjฤ™ โ€žProjekt testu jednostkowegoโ€.
  3. Nadaj nazwฤ™ projektowi testowemu. W naszym przypadku podana nazwa to โ€žDemoTestโ€.
  4. Na koniec kliknij przycisk โ€žOKโ€.

Ostatecznie projekt DemoTest zostanie dodany do eksploratora rozwiฤ…zaล„. Dziฤ™ki temu moลผesz takลผe zobaczyฤ‡, ลผe inne pliki, takie jak UnitTest1.cs, wล‚aล›ciwoล›ci itp. sฤ… generowane domyล›lnie.

Tworzenie projektu testรณw jednostkowych .NET

Uruchomienie projektu testowego

Projekt testowy utworzony w poprzedniej sekcji sล‚uลผy do testowania naszej aplikacji ASP.NET. W poniลผszych krokach pokaลผemy, jak uruchomiฤ‡ projekt testowy.

  • Pierwszym krokiem bฤ™dzie dodanie odwoล‚ania do projektu ASP.NET. Ten krok jest wykonywany, aby projekt testowy miaล‚ dostฤ™p do projektu ASP.NET.
  • Nastฤ™pnie napiszemy nasz kod testowy.
  • Na koniec uruchomimy test przy uลผyciu programu Visual Studio.

Krok 1) Aby przetestowaฤ‡ naszฤ… aplikacjฤ™ demonstracyjnฤ…, pierwszy projekt testowy musi odwoล‚ywaฤ‡ siฤ™ do aplikacji demonstracyjnej. Dodaj odwoล‚anie do rozwiฤ…zania Demo.aspx.

Uruchamianie projektu testowego .NET

  1. Kliknij prawym przyciskiem myszy projekt testu demonstracyjnego
  2. Z menu wybierz opcjฤ™ Dodaj->Referencja.

Krok 2) Kolejnym krokiem jest dodanie referencji do aplikacji DemoApplication.

Uruchamianie projektu testowego .NET

  1. Wybierz opcjฤ™ Projekty z lewej strony okna dialogowego
  2. Kliknij pole wyboru obok DemoApplication
  3. Kliknij przycisk โ€žOKโ€.

Umoลผliwi to projektowi demotestowemu przetestowanie naszej aplikacji DemoApplication.

Krok 3) Teraz czas dodaฤ‡ kod testowy do naszego projektu testowego.

  • Najpierw kliknij dwukrotnie plik UnitTest1 (plik UnitTest1 jest automatycznie dodawany przez program Visual Studio podczas tworzenia projektu Test) w Eksploratorze rozwiฤ…zaล„.
  • To jest plik, ktรณry zostanie uruchomiony w celu przetestowania projektu ASP.NET.

Uruchamianie projektu testowego .NET

Zobaczysz poniลผszy kod dodany przez Visual Studio w pliku UnitTest1.cs. To jest podstawowy kod potrzebny do uruchomienia projektu testowego.

Uruchamianie projektu testowego .NET

Krok 4) Nastฤ™pnym krokiem jest dodanie kodu, ktรณry sล‚uลผy do testowania ciฤ…gu โ€žGuru99 โ€“ ASP.NET.โ€

Uruchamianie projektu testowego .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");
   }
 }
}
  1. Utwรณrz nowy obiekt o nazwie โ€žtpโ€ typu Tutorial
  2. Metoda Assert.AreEqual jest uลผywana w .NET do sprawdzania, czy wartoล›ฤ‡ jest rรณwna czemuล› innemu. W naszym przypadku porรณwnujemy wartoล›ci tp.Name z Guru99 โ€“ ASP.NET.

Krok 5) Teraz uruchommy nasz projekt testowy. W tym celu musimy przejล›ฤ‡ do opcji menu Test->Uruchom->Wszystkie testy.

Uruchamianie projektu testowego .NET

Wynik:-

Uruchamianie projektu testowego .NET

W programie Visual Studio pojawi siฤ™ okno Eksploratora testรณw. Wyล›wietli ono powyลผszy wynik i poinformuje, ลผe w programie Visual Studio przeprowadzono pomyล›lny test.

Atrybuty i potwierdzenia MSTest, ktรณrych bฤ™dziesz uลผywaฤ‡

MicrosoftPrzestrzeล„ nazw .VisualStudio.TestTools.UnitTesting zawiera niewielki zestaw atrybutรณw i asercji, ktรณre obejmujฤ… wiฤ™kszoล›ฤ‡ testรณw jednostkowych ASP.NET. Poznanie ich w pierwszej kolejnoล›ci uล‚atwia czytanie i konserwacjฤ™ kolejnych testรณw.

  • [Klasa testowa] โ€“ oznacza klasฤ™ jako kontener testรณw. MSTest skanuje klasy z tym atrybutem w momencie wykrywania.
  • [Metoda testowa] โ€“ oznacza publicznฤ…, bezparametrowฤ… metodฤ™ jako indywidualny test. Metoda zwraca void, Task lub ValueTask.
  • [TestInitialize] / [TestCleanup] โ€“ uruchamiane przed i po kaลผdej metodzie testowej. Uลผywaj ich do tworzenia i usuwania wspรณล‚dzielonych konfiguracji, takich jak repozytorium pozorowane lub kontekst w pamiฤ™ci.
  • [Inicjalizacja klasy] / [Czyszczenie klasy] โ€“ uruchom raz dla caล‚ej klasy. Sฤ… przydatne, gdy konfiguracja jest kosztowna, na przykล‚ad do tworzenia testowej bazy danych.
  • [Wiersz danych] i [Metoda testu danych] โ€“ dostarczajฤ… sparametryzowane dane wejล›ciowe, tak aby pojedyncza metoda testowania obejmowaล‚a kilka przypadkรณw.

W kaลผdej metodzie testowej klasa Assert sprawdza wynik. Typowe wywoล‚ania to Assert.AreEqual dla porรณwnaล„ wartoล›ci, Assert.IsTrue i Assert.IsFalse dla wartoล›ci logicznych, Assert.IsNull i Assert.IsNotNull dla referencji oraz Assert.ThrowsException dla oczekiwanych wyjฤ…tkรณw. Ustrukturyzuj kaลผdy test, korzystajฤ…c ze wzorca Arrange, Act, Assert, aby konfiguracja, wywoล‚anie i weryfikacja pozostaล‚y wizualnie oddzielone. Taki ukล‚ad uล‚atwia debugowanie nieudanych testรณw, poniewaลผ nieudany wiersz to prawie zawsze pojedynczy Assert na dole.

Porรณwnanie MSTest, NUnit i xUnit dla ASP.NET

W ekosystemie .NET dominujฤ… trzy frameworki testowe. Kaลผdy z nich dziaล‚a w ล›rodowisku Visual Studio i integruje siฤ™ z dotnet test, wiฤ™c rรณลผnice dotyczฤ… gล‚รณwnie stylu, wsparcia spoล‚ecznoล›ci i domyล›lnego zachowania.

  • MSTest โ€“ wysล‚ane przez Microsoft i jest preinstalowany z szablonem projektu testรณw jednostkowych programu Visual Studio, ktรณry byล‚ uลผywany wczeล›niej w tym samouczku. Jest to najbezpieczniejsze ustawienie domyล›lne, gdy zespรณล‚ dopiero zaczyna przygodฤ™ z testowaniem jednostkowym. Microsoft stos.
  • NJednostka โ€“ najstarszy z trzech, pierwotnie przeniesiony z JUnitOferuje bogaty model ograniczeล„, parametryzacjฤ™ testรณw za pomocฤ… TestCase i TestCaseSource oraz dojrzaล‚e wsparcie dla kaลผdej wersji .NET.
  • xUnit.net โ€“ uลผywany wewnฤ™trznie przez zespoล‚y ASP.NET Core i Entity Framework Core. Zastฤ™puje metodฤ™ SetUp konstruktorem i interfejsem IDisposable, zaleca jednฤ… klasฤ™ testowฤ… na zachowanie i uลผywa [Fact] i [Theory] zamiast [TestMethod].

Wszystkie trzy struktury wykrywajฤ… testy za pomocฤ… atrybutรณw, uruchamiajฤ… polecenie dotnet test i generujฤ… raporty trx lub xUnit XML, ktรณre potoki CI, takie jak Azure DevOps, dziaล‚ania GitHub i Jenkins Moลผna go bezpoล›rednio wykorzystaฤ‡. W przypadku pierwszego projektu ASP.NET, korzystanie z MSTest pozwala zachowaฤ‡ prostotฤ™ zestawu narzฤ™dzi. Zespoล‚y, ktรณre chcฤ… bogatszej parametryzacji lub juลผ korzystajฤ… z ASP.NET Core, czฤ™sto wybierajฤ… xUnit ze wzglฤ™du na spรณjnoล›ฤ‡ z frameworkiem, w ktรณrym zostaล‚ zbudowany.

Najlepsze praktyki testowania jednostkowego aplikacji ASP.NET

Przestrzeganie kilku zasad sprawia, ลผe โ€‹โ€‹pakiet jest szybki, niezawodny i uลผyteczny przez caล‚y okres trwania projektu ASP.NET.

  1. Przetestuj jedno zachowanie dla kaลผdej metody. Test, ktรณry sprawdza kilka niezaleลผnych rzeczy, koล„czy siฤ™ niepowodzeniem z wielu powodรณw, a jego naprawienie zajmuje wiฤ™cej czasu.
  2. Nazwy testรณw zaleลผฤ… od intencji. Wzorzec taki jak MethodUnderTest_Scenario_ExpectedResult sprawia, ลผe โ€‹โ€‹wynik Eksploratora testรณw staje siฤ™ czytelnฤ… specyfikacjฤ… klasy.
  3. Odizoluj jednostkฤ™ od systemรณw zewnฤ™trznych. Zawijaj wywoล‚ania plikรณw, sieci i baz danych za pomocฤ… interfejsรณw i podmieniaj je na faล‚szywe lub mocki, aby test nie natrafiล‚ na rzeczywistฤ… zaleลผnoล›ฤ‡.
  4. Utrzymuj szybkoล›ฤ‡ testรณw. Dฤ…ลผ do ukoล„czenia caล‚ego pakietu moduล‚รณw w kilka sekund. Powolne testy sฤ… pomijane, a pominiฤ™te testy ukrywajฤ… regresje.
  5. Postฤ™puj zgodnie z zasadฤ…: Uporzฤ…dkuj, Dziaล‚aj, Potwierdลบ. Trzy krรณtkie bloki rozdzielone pustymi liniami sygnalizujฤ… zamiar przejazdu i uล‚atwiajฤ… zauwaลผenie wadliwych linii.
  6. Przeprowadzaj testy przy kaลผdym zatwierdzeniu. Podล‚ฤ…cz test Dotnet do potoku CI, tak aby uszkodzony test blokowaล‚ scalanie zamiast wysyล‚aniaping do produkcji.
  7. Track pokrycia kodu, ale nie naleลผy go ล›cigaฤ‡. W raporcie wskazano nieprzetestowane ล›cieลผki, ale sama wysoka liczba nie gwarantuje jakoล›ci. Revzobacz, co wล‚aล›ciwie robiฤ… brakujฤ…ce linijki.

Zastosowane razem, te praktyki przeksztaล‚cajฤ… opisany powyลผej projekt DemoTest w zalฤ…ลผek pakietu, ktรณry wychwytuje regresje przy kaลผdym wprowadzeniu zmian, dokumentuje zachowanie dla przyszล‚ych programistรณw i daje pewnoล›ฤ‡ podczas refaktoryzacji aplikacji ASP.NET.

FAQ

Tak. GitHub Copilot moลผe obsล‚ugiwaฤ‡ bloki [TestClass] i [TestMethod], sugerowaฤ‡ ukล‚ady Arrange Act Assert i generowaฤ‡ sparametryzowane przypadki [DataRow] z sygnatury metody docelowej. Revprzejrzyj wygenerowane stwierdzenia przed zatwierdzeniem ich w ล›rodowisku produkcyjnym.

Tak. Asystenci oparty na uczeniu maszynowym mogฤ… oznaczaฤ‡ sล‚abe testy, proponowaฤ‡ lepsze nazwy i podล›wietlaฤ‡ zduplikowane konfiguracje, ktรณre powinny znaleลบฤ‡ siฤ™ w [TestInitialize]. Skracajฤ… czas przeglฤ…du, ale programista nadal jest odpowiedzialny za poprawnoล›ฤ‡ kaลผdego potwierdzenia.

Test jednostkowy izoluje jednฤ… klasฤ™ lub metodฤ™ i symuluje jej zaleลผnoล›ci. Test integracyjny testuje kilka komponentรณw jednoczeล›nie, czฤ™sto wykorzystujฤ…c rzeczywistฤ… bazฤ™ danych lub serwer WWW. Testy jednostkowe dziaล‚ajฤ… w milisekundach; testy integracyjne trwajฤ… dล‚uลผej, ale wychwytujฤ… bล‚ฤ™dy w okablowaniu.

W programie Visual Studio Enterprise uลผyj funkcji Test Analyze Code Obejmuje wszystkie testy. W innych edycjach naleลผy dodaฤ‡ Coverlet N.uGet spakuj i uruchom dotnet test โ€“collect:โ€XPlat Code โ€žPokrycieโ€ w celu wytworzenia Cobertura Raport XML.

Zawiล„ zaleลผnoล›ฤ‡ w interfejs i wstrzyknij jฤ… przez konstruktor. W teล›cie przekaลผ stub lub mock zbudowany z bibliotek takich jak Moq lub NSubstitute, aby testowana jednostka nigdy nie miaล‚a kontaktu z prawdziwฤ… bazฤ… danych ani punktem koล„cowym HTTP.

Uruchom dotnet test w folderze zawierajฤ…cym projekt testowy. Polecenie kompiluje projekt, wykrywa kaลผdฤ… metodฤ™ [TestMethod], uruchamia jฤ… i wyล›wietla podsumowanie. Systemy CI, takie jak GitHub Actions, wywoล‚ujฤ… to samo polecenie w kroku przepล‚ywu pracy.

Oznacz metodฤ™ atrybutem [DataTestMethod] i dodaj jeden lub wiฤ™cej atrybutรณw [DataRow], ktรณre dostarczajฤ… wartoล›ci wejล›ciowe i oczekiwany wynik. Nastฤ™pnie MSTest uruchamia ten sam kod raz dla kaลผdego wiersza, generujฤ…c osobny wiersz w Eksploratorze Testรณw dla kaลผdego przypadku.

Napisz bล‚ฤ™dnฤ… metodฤ™ [TestMethod], ktรณra opisuje kolejne wymagane zachowanie, dodaj tylko tyle kodu produkcyjnego, aby jฤ… zaliczyฤ‡, a nastฤ™pnie zrefaktoryzuj. Powtarzanie tej czerwono-zielonej pฤ™tli refaktoryzacji sprawia, ลผe โ€‹โ€‹projekt jest oparty na testach, a nie odwrotnie.

Podsumuj ten post nastฤ™pujฤ…co: