Strongly typed HTTP clients are very useful and convenient. Here's how to test them without sacrificing the advantages of dependency injection.
Sztuka programowania 884 dni, 12 godzin, 42 minuty temu 189 źrodło rozwiń
Mocki to zmora wielu osób bo często trzeba napisać sporo „niepotrzebnego” kodu, który czasem (jeśli dobierzemy zły framework) jest zupełnie nieczytelny. Na domiar tego niektórzy używają pojęć mock, stub, fake, dummy. Jak się połapać w tym wszystkim? Co do czego użyć? Jak to wszystko pokonfigurować? I wszystko po to aby przetestować jakąś jedną funkcję… … no właśnie, dlatego nie piszę mocków. Unikam ich jak ognia. No ale jak to nie piszę? Bo jestem leniwy i uważam, że dobry...
W poprzednim wpisie pokazałem Ci, jak użyć Sql Server Snapshots do resetowania stanu bazy w automatycznych testach. Innym podejściem, które możemy wykorzystać podczas pracy, jest po prostu usuwanie z bazy danych, które zostały dodane podczas wykonywania testów. Tytułowa biblioteka Respawn umożliwia realizację czegoś takiego w bardzo prosty sposób, ale ma również niestety swoje wady. Zobacz, co umożliwia i gdzie może Ci się ona przydać.Respawn Respawn (https://...
Bazy danych i XML 1910 dni, 13 godzin, 37 minut temu 102 źrodło rozwiń
Reading time ~7 minutes This article is Part 3 in a 3-Part Series. Part 1 - Refactoring to Data Driven TestsPart 2 - How to get data for Data-Driven Tests?Part 3 - This Article As promised here and here, this will be tips, tricks, and good practices for data-driven tests. If You want to know more about data-driven testing see my previousposts on this topic. Here we go. I will be converting this series into an ebook with additional source code and examples. If You want to get it please subscribe:G...
Sztuka programowania 1916 dni, 13 godzin, 15 minut temu 53 źrodło rozwiń
Reading time ~7 minutes I am not a big fan of writing tests. I like having them, but I find writing them to be boring. That said, retesting manually is even more annoying, so I write tests. The thought that there has to be a better way, never passed. I tried a few approaches. After some experimentation, I think I have the answer - DDT (Data Driven Testing) Before we dig into what Data Driven Tests are, let’s look at some standard, non-DDT tests.What we will be testing? There is a fragile line for cod...
Sztuka programowania 1927 dni, 13 godzin, 3 minuty temu 41 źrodło rozwiń
Zaczniemy od tego, co tak na prawdę robi AutoFixture? Jak go używać? I dlaczego jest taki pomocny w testowaniu?
Reading time ~3 minutes I’ve seen multiple people struggling with trying to mock the ILogger calls. This post will hopefully save some people from wandering this path. Here it goes:Please stop trying to mock the ILogger methods from .net core. Here is why: Most ILogger methods that we use for logging are extension methods - static methods. While mocking them is possible using Prig, or Microsoft Fakes it is not easy or pleasant. Mocking a static method boils down to replacing the code at runtime using...
Sztuka programowania 1944 dni, 13 godzin, 53 minuty temu 128 źrodło rozwiń
Tym razem jednak skupiliśmy się na definicji kilku dobrych praktyk wspomagających tworzenie testów jednostkowych. Takich testów, które dobrze weryfikują implementacje, zapewniają jakość oraz łatwo jest je utrzymywać. Jakie dobre praktyki warto stosować podczas pisania testów jednostkowych? Wśród popularnych aspektów jak zasady FIRST czy grupowanie implementacji testu w trzy grupy – Given, When, Then pojawiły się także inne warte uwagi techniki. Jesteś ciekawy jakie? To serdecznie zapraszam Cię do odsłu...
Sztuka programowania 2116 dni, 13 godzin, 8 minut temu 109 źrodło rozwiń
Dzięki artykułowi dowiesz się wszystkiego co trzeba wiedzieć o poziomach testów w projekcie. Jakie mamy poziomy oraz jakie cele spełniają.
Sztuka programowania 2127 dni, 11 godzin, 7 minut temu 162 źrodło rozwiń
Sposób tworzenia aplikacji webowych zmienia się na przestrzeni czasu. W świecie .NET przez lata kodowaliśmy w ASP.NET MVC, w którym widoki były generowane po stronie serwera. Od jakiegoś czasu idziemy w kierunku, w którym backend udostępnia API, z którego korzysta aplikacja po stronie przeglądarki i która generuje widoki po stronie klienta. W związku z tym zmienił się też sposób testowania aplikacji po stronie serwera. Jednym z dostępnych narzędzi, które możemy...
Dwa tygodnie temu opublikowałem wpis o bibliotece Fluent Assertions, która bardzo ułatwia pisanie assertów w testach (zachęcam pierw do przeczytania tamtego wpisu). Pokazałem jak korzystać z biblioteki oraz jak łatwo można rozszerzać możliwości biblioteki o własne metody. Dzisiaj natomiast pokaże Ci, jak testować kontrolery w ASP.NET MVC za pomocą rozszerzenia o nazwie FluentAssertions.MVC (https://github.com/fluentassertions/fluentassertions.mvc). Poćwiczymy r...
W ostatnim wpisie poruszyłem temat testowania i w dzisiejszym wpisie zostaniemy przy tym temacie. O ile z testowaniem warstwy logiki biznesowej na ogół nie mamy problemów, to już dużo gorzej wygląda to z warstwą dostępu do danych. Entity Framework z pudełka nie umożliwia prostego pisania testów jednostkowych. Są różne rozwiązania tego problemu. Część osób idzie tak naprawdę w testy integracyjne i wykonuje zapytania na realnej bazie. Część osób korzysta z baz da...
Bazy danych i XML 2197 dni, 11 godzin, 20 minut temu 196 źrodło rozwiń
W 10-tym odcinku podcastu przedstawiamy swoje 10 dobrych praktyk tworzenia oprogramowania. Nie mówimy o SOLID, DRY, KISS i reszcie "popularesów". O tym poczytasz już u wszystkich specjalistów. My przygotowaliśmy swoje własne zestawienie. TOP 10 Dobrych Praktyk Tworzenia Oprogramowania.
Sztuka programowania 2343 dni, 11 godzin, 46 minut temu 96 źrodło rozwiń
Ostatnio opisywałam po co i jak piszemy przypadki testowe. Dzisiaj chciałabym odpowiedzieć na pytanie - co jest nam potrzebne aby przetestować aplikację. Natychmiast przychodzi nam do głowy, środowisko, odpowiednie narzędzia, dane testowe itd.. I na tym ostatnim dzisiaj chciałabym się skupić. Dane testowe są jednym z kluczowych elementów dobrze przeprowadzonego testu. Dlaczego tak uważam?
Sztuka programowania 2350 dni, 14 godzin, 3 minuty temu 39 źrodło rozwiń
W jednym z wcześniejszych wpisów pokazałem jak za pomocą dwóch bibliotek (Nbuilder oraz Faker.NET) wygenerować dane testowe. Przez dłuższy czas korzystałem z tamtego rozwiązania, natomiast ostatnio kolega z pracy pokazał mi inną, ciekawszą bibliotekę, która łączy działanie Nbuildera oraz Faker.NET. Do tego ma kilka dodatkowych funkcji, które się przydają. Biblioteka nazywa się Bogus i jest to port biblioteki Faker.js. Po pierwsze biblioteka umożliwia wygenerowanie jednego...
Od ponad roku rozwijam framework do automatyzacji testów. Przez ten czas miałem okazję pracować przy kilku projektach związanych z automatyzacją, gdzie poznałem wspaniałych ludzi i za każdym razem miałem okazję spojrzeć na testowanie automatyczne z innej perspektywy. Widziałem kod doskonały (tak, istnieją takie! :)) oraz taki, o którym chciałbym jak najszybciej zapomnieć. Dzisiaj skupię się na tym drugim i przedstawię wam 3 sprawdzone sposoby na to, jak zepsuć testy automatyczne...
Sztuka programowania 2685 dni, 33 minuty temu 214 źrodło rozwiń
Tworzenie nowego kodu jest fajne. Dlaczego? Bo możemy najpierw napisać do niego testy. O tym, jak się tego nauczyć, poczytasz w tym niedawnym tekście. Ale co jeśli już MASZ kod? Michę pełną spaghetti? Do problemu tego można podejść na kilka sposobów. Jeden jest bezsensowny, pozostałe: działają. AAAAAATTTAAAACKK!!!! Rzucanie się “na hurra” i dopisywanie testów tylko po co, żeby “mieć testy”, to złe rozwiązanie. Choć wcale nierzadko spotykane.
Sztuka programowania 2973 dni, 6 godzin, 13 minut temu 192 źrodło rozwiń
Behavior Driven Development – dosyć niedawno nawet słyszałem, że to Test Driven Development Done Right 🙂 Co, jak, czemu i po co? Czytaj by się dowiedzieć jak ja to widzę :)
Sztuka programowania 3029 dni, 12 godzin, 49 minut temu 222 źrodło rozwiń
~ Jarosław StadnickiBajki Znowu wpis o mitach. Bo jak często widać, że w jakimś projekcie pokrycie testami wynosi 100%? Częściej się o tym mówi, niż widzi. Menagiery i biznes się chyba pogodził z tym, że ciężko będzie to osiągnąć i miękną, mówią dobra to robimy 80% albo 60% jeśli projekt mało ważny, a metryki jakieś muszą mieć – a szkoda, bo to nie jest aż taka ciężka sprawa.Dygresja Teraz taka myśl przyszła mi do głowy, czy ktoś patrzy w ogóle na te procenty, które kryją kod? Bo jak się uprzeć, to wy...
Sztuka programowania 3085 dni, 8 godzin, 50 minut temu 289 źrodło rozwiń
~ Jarosław StadnickiJest pięknie Żeby zgrabnie było, trzeba popróbować i tak ułożyć i siak ułożyć i sprawdzić i obejrzeć i posmakować. Ja chciałem wam opisać krótko jak sobie ułożyłem testy w projekcie i póki co mi podoba taki układ.Od góry Zaczynając od samej solucji: Na testy przeznaczyłem osobny folder, a projekt nazywa się tak samo jak projekt który chce testować, rozszerzony o Tests. Myślę, że większość z was robi tak samo. Dalej wygląda to tak: Kolejne podfoldery odpowiadają klasom, które...
Architektura 3086 dni, 13 godzin temu 151 źrodło rozwiń