Dzisiaj opublikowałem małą poradę o tym jak ustawiać zmienne globalne w testach przy pomocy XUnit. Może to być pomocne, jeśli przeprowadzasz testy integracji API dla aplikacji korzystającej z Marten. Dołączyłem również małą tyradę na temat frameworków testowych .NET.
Jakiś czas temu, zupełnie dla funu napisałem sobie sprytną biblioteczkę do testów w stylu BDD. Dzisiaj po chrzcie w ogniu (czytaj użyciu w moich samplach) wypuściłem wersję 0.1. Założenia: - pomóc w płynnym i czytelnym pisaniu testów, - usunąć boilerplate za pomocą zestawu pomocnych helperów, - nie zastępować frameworków testowych (działa ze wszystkimi, więc XUnit, NUnit, MSTests itp.) ani innych do asercji - zachować prostotę, ale zezwolić na kompozycje i rozszerzenia. Póki co służy do testów API, bo ...
ProgramowanieNapisz komentarz Dziś wstępnie przyjrzymy się tematowi, który nieśmiało zyskuje ostatnio popularność. Są to testy mutacyjne. W jaki sposób możemy testować nasze testy? Co nam to daje? Dlaczego testy mutacyjne są świetnym uzupełnieniem code coverage? Jak „za darmo” wygenerować nowe przypadki testowe dla naszego kodu? Jeśli zainteresowały Cię te pytania, zapraszam do lektury 😉 Spis treściCo to są testy mutacyjne?Code coverage vs testy mutacyjneNarzędzia do testów mutacyjnychCo nam dają test...
Przemysław Walkowski Skończyłem. Trochę miałem poślizgu ale kolejny kurs zakończony. Po kursie z gita, DNA, DB Master już byłem trochę otrzaskany z tym czego się można spodziewać po takim kursie i… nie zawiodłem się choć… Zapraszam na recenzje kursu SmartTestigTLTR; Kurs https://smarttesting.pl/ jest ok. Merytorycznie jest spoko, jeśli nic nie wiesz o testach albo jeśli wiesz tak średnio. Czasem brakuje ...
Sztuka programowania 1403 dni, 19 godzin, 5 minut temu 114 źrodło rozwiń
Czasem chcemy wiedzieć jakie mamy pokrycie testami naszego kodu. Chcemy znać wskaźnik Code Coverage. O ile jestem przeciwny ślepemu zapatrywaniu się w liczby, bo przecież pokrycie 100% kodu testami nic nie mówi, o tyle podoba mi się idea pokazywania które fragmenty kodu tymi testami są pokryte. ...
Publikowałem na blogu już kilka wpisów na temat testowania API z wykorzystaniem świetnego narzędzia jakim jest Postman. W tym w jaki sposób automatycznie testować API podczas każdego release w Azure DevOps. W tym wpisie natomiast chciałbym przedstawić alternatywę dla takich testów, w postaci narzędzia Karate.Karate Karate jest narzędziem, za pomocą którego możemy wykonać różnego rodzaju testy. Od testów API, które pokażę Ci w tym wpisie, po testy interfejsu uż...
Testy integracyjne stanowią ważną część naszego systemu. Pozwalają zweryfikować naszą aplikację w szerokim kontekście, włączając w to infrastrukturę. Testy kontrolerów zapewniają nam poprawne działanie warstwy wejściowej do naszej aplikacji.
Sztuka programowania 1449 dni, 18 godzin, 39 minut temu 122 źrodło rozwiń
Jakiś czas temu pisałem o tym, że gdy tworzymy API, warto dodać narzędzie Swagger. Umożliwia ono w szybki i prosty sposób przetestować nasze API (tutaj). Zdarza się jednak tak, że aby móc korzystać z naszego API, dane żądanie (request) musi być zautoryzowane, czyli np. posiadać odpowiedni token. Swagger umożliwia autoryzację żądań na wiele sposobów. W tym poście opiszę jak to zrobić, gdy potrzebujemy Bearer token.
Today I’d like to share with you a very interesting concept in software testing – Assert Object pattern. It makes the Assert part of a test much simpler and more readable. Let’s dive right into it 😉The Asserts Hell Let’s consider the following unit test: What’s wrong here? Given and When sections are great single-liners. We know straightaway what’s the input and the action executed. However, Then block is too complex. It’s hard to figure out, just passing quickly through this test, what is expected. T...
Sztuka programowania 1483 dni, 19 godzin, 4 minuty temu 65 źrodło rozwiń
Pierwszy techniczny artykuł w Cesarstwie-Dev, i od razu coś ekstra! Połączenie dwóch tematów, które są bardzo bliskie memu sercu – integracje z zewnętrznymi systemami oraz testy! To co? Zaczynajmy!
Sztuka programowania 1536 dni, 20 godzin, 29 minut temu 80 źrodło rozwiń
Jakiś czas temu pisałem o testach w kontekście API (tutaj). W tym poście postaram się opisać jak napisać podobne testy, ale gdy nasza aplikacja komunikuje się poprzez kolejkę. Pokaże to z wykorzystaniem biblioteki MassTransit.
Prosty sposób na postawienie testów integracyjnych z autoryzacja w .NET Core, wykorzystując biblioteki Microsoft.AspNetCore.Mvc.Testing i Microsoft.AspNetCore.TestHost
Sztuka programowania 1553 dni, 20 godzin, 26 minut temu 92 źrodło rozwiń
Wstęp do pisania testów jednostkowych w .NET
Sztuka programowania 1641 dni, 20 godzin, 28 minut temu 147 źrodło rozwiń
Pisząc aplikację zwykle piszemy testy. Raczej nie muszę wyjaśniać po co 🙂 Czy tworząc różne procedury lub funkcje na bazie danych też sprawdzamy ich poprawność pisząc testy? Tu już niekoniecznie. A szkoda, bo pisanie testów w tSQLt nie różni się za bardzo od pisania zwykłych testów jednostkowych...
Bazy danych i XML 1659 dni, 20 godzin, 18 minut temu 63 źrodło rozwiń
Gdy tworzymy jakieś API dobrze jest sprawdzić, czy ono działa. Po każdej zmianie albo dodaniu nowego punktu wejścia (endpoint) powinniśmy przetestować, czy wszystko jest ok. Możemy to zrobić uruchamiając aplikację i ręcznie wszystko sprawdzając, jednakże na dłuższą metę jest to bardzo czasochłonne. Dlatego warto utworzyć osobny projekt, w którym stworzymy testy sprawdzające czy nasze API działa poprawnie. W kilku punktach postaram się opisać jak u mnie z reguły wygląda taki projekt z testami API.
Nie wyobrażam sobie programowania bez pisania testów. Gdy śpieszy mi się i o nich „zapominam”, potem i tak poprawiam kod przez jakąś głupotę. Poprawiają jakość i przyśpieszają czas tworzenia oprogramowania. Nie wierzysz?Spis treścihide1Rozkład jazdy2Co zyskamy?3Zależności4Testowalny kod Kafka Streams5Test 1 – LowercaseStreamTopologyTestDriverTest właściwy6Test 2 – SerDeJsonStream7Repozytorium8WnioskiPodobneRozkład jazdyKafka Streams 101 – de/serilizacjaKafka Streams 102 – Wyjątki i Dead Letter QueueKafka...
Sztuka programowania 1693 dni, 20 godzin, 12 minut temu 43 źrodło rozwiń
Cześć. Pisząc następny wpis do serii CI/CD pipeline z użyciem Kubernetesa, AWS, Azure i .NET Core natknąłem się na problem z Octopus Deploy, o którym poinformowałem jego deweloperów tutaj. Został on już naprawiony, jednak w międzyczasie popełniłem ten wpis. Wyskoczmy trochę z "hype trainu" k8s.
Architektura 1743 dni, 19 godzin, 22 minuty temu 82 źrodło rozwiń
Gdy tworzymy testy jednostkowe bardzo często musimy coś „zmockować” (czyli stworzyć sztuczny obiekt, którego będziemy używali w trakcie testów zamiast prawdziwej implementacji). Niestety czasem bywa tak, że nasza klasa ma dużo zależności, a do naszego testu potrzebujemy tylko niektórych z nich. Mimo to musimy stworzyć mock dla każdej z zależności, bo inaczej nie będziemy mogli wykonać testu. Czasem bywa też tak, że potrzebujemy dodać nową zależność do istniejącej klasy, a potem trzeba przerobić wszystkie...
Podczas pisania testów (czy to jednostkowych, czy integracyjnych, czy e2e) prawie zawsze musimy stworzyć obiekt z danymi. Czasem jest to obiekt wejściowy, czasem wyjściowy. Z reguły nie interesuje nas większość pól danego obiektu, a jedynie kilka konkretnych. Mimo to musimy uzupełnić wszystkie pola, aby aplikacja zachowywała się poprawnie. Tu z pomocą może nam przyjść biblioteka AutoFixture.
Reading time ~7 minutes This article is Part 4 in a 4-Part Series. Part 1 - Refactoring to Data Driven TestsPart 2 - How to get data for Data-Driven Tests?Part 3 - Tips, tricks, and good practices for Data-Driven Testing. Part 1.Part 4 - This Article This post is a continuation of a previous tips, tricks, and good practices for Data-Driven Testing entry. This one with more code. I will be converting this series into an ebook with additional source code and examples. If you want to get it, please su...
Sztuka programowania 1903 dni, 21 godzin, 32 minuty temu 34 źrodło rozwiń