In some cases, there are classes with constructors that are impossible to mock with proxy-based mocking frameworks (such as Moq, FakeItEasy, NSubstitute, etc). In this article, I will present how to create a test for class that is impossible to mock. Some constructors might be difficult or even impossible to mock because of:There&##x27;s...
Strona głównaUżytkownik
dariuszwozniak | użytkownik
Sztuka programowania czwartek, 9 listopada 2023 17:52:16 GMT 6 spam? źrodło rozwiń
Is catch the same as catch(Exception)? Not exactly. There is a small subtle nuance that causes catch(Exception) to be not hit. Chances that it happen are, however, close to zero very close to zero. According to the CLR via C# book (Richter, 2012): All programming languages for the CLR must support the throwing of Exception-derived objects because the Common Language Specification (CLS) mandates thi...
Scrutor to sprytna biblioteka, która pozwala na automatyczną rejestrację zależności (dependency injection) dla kontenera IOC Microsoft.Extensions.DependencyInjection. Ideą biblioteki Scrutor jest skanowanie kodu źródłowego, np. assembly, celem automatycznej rejestracji zależności wedle zadanych przez nas reguł.
W testach bardzo często mamy do czynienia z powtarzaniem tego samego kodu. Tak samo ma się sprawa z testowaniem null-checków (zw. inaczej jako guard clauses) w konstruktorach. Jeśli chcemy napisać test dla takiego przypadku, to zazwyczaj jest on napisany jako osobna metoda. Jak możemy sobie uprościć życie? Z pomocą przychodzi biblioteka AutoFixture.Idioms. Aby móc skorzystać z funkcji do automatycznego testowania null-checków w konstruktorach, potrzebujemy zainstalować dwa nugety:AutoFixture.Idi...
Sztuka programowania 1923 dni, 5 godzin, 30 minut temu 89 źrodło rozwiń
W jaki sposób mockować (za pomocą Moq) metody ze słowem kluczowym out? Przyjrzyjmy się bliżej problemowi…
Sztuka programowania 1934 dni, 5 godzin, 29 minut temu 85 źrodło rozwiń
NUnit w wersji 3.6 wprowadził dość ciekawą funkcję – Assert.Multiple. Dzięki niej, dostajemy informacje na temat wszystkich testów, które nie przeszły. Przyjrzyjmy się temu bliżej… Do tej pory, używając kilku asercji naraz, jedna niespełniona asercja powodowała, że dalszy kod nie jest wykonywany.
Sztuka programowania 2884 dni, 14 godzin, 4 minuty temu 163 źrodło rozwiń
Test-Driven Development pojawia się w kontekstach :techniki,metody,metodologii i metodyki. Które z tych określeń poprawnie definiuje TDD? Zacznijmy od definicji poszczególnych pojęć: technika: (1) «wiedza na temat praktycznego wykorzystania osiągnięć nauki w przemyśle, transporcie, medycynie itp.; też: praktyczne wykorzystanie tej wiedzy» (2) «metoda» metoda: «świadomie stosowany sposób postępowani...
Sztuka programowania 2922 dni, 23 godziny, 6 minut temu 77 źrodło rozwiń
Jeśli estymacja czasowa nie sprawdza się w naszym projekcie (co jest wielce prawdopodobne w przypadku oprogramowania), to możemy się posłużyć estymacją relatywną. Wielkość relatywna ma, w przeciwieństwie do estymaty bezwzględnej (najczęściej czasowej), ogromną przewagę, gdyż: Minimalizuje błędy związane z przewidywaniem czasu poświęconego na złożone i skomplikowane zadania...
Sztuka programowania 2927 dni, 4 godziny, 19 minut temu 157 źrodło rozwiń
Estymacja, czyli szacowanie projektu programistycznego to bardzo często bolączka każdego zespołu. Czego użyć do szacowania naszego projektu:estymat godzinowych,roboczodniowych,Story Pointów,koszulkowych,a może w ogóle nie korzystać z estymat #noestimates #yolo? Postaram się przedstawić sposoby or...
Sztuka programowania 2943 dni, 2 godziny, 1 minutę temu 150 źrodło rozwiń
To już ostatnia część kursu TDD (przed podsumowaniem) na tym blogu. Tym razem, formuła artykułu jest odmienna. Zamiast przedstawiać dane zagadnienie, to ja pytam Ciebie, czytelniku, o TDD… Jeśli uczysz się TDD, to warto przed wygooglowaniem odpowiedzi zastanowić się nad każdym z tych punktów i postarać się odpowiedzieć na pytanie.
Sztuka programowania 3008 dni, 5 godzin, 36 minut temu 146 źrodło rozwiń
Najprawdopodobniej spotkałeś się z tym problemem: Kod zastany, napisany przez nas lub nie, na pewno nie perfekcyjny i ostatecznie bez testów jednostkowych (ang. legacy code). Co teraz? Wstrzymać dotychczasowe prace nad projektem i pisać testy jednostkowe? A może całkowicie zaniechać pisania testów, bo skoro nigdy nie było testów, to po co pisać je teraz? Do tej pory omawialiśmy TDD z perspektywy pisania...
Sztuka programowania 3033 dni, 5 godzin, 32 minuty temu 224 źrodło rozwiń
Test-Driven Development ma niezaprzeczalnie bardzo pokaźną liczbę zalet jednak jednym z problemów stojących na przeszkodzie we wdrożeniu i stosowaniu tej metodologii jest fakt, że pisanie testów jednostkowych wymaga większego nakładu czasowego programisty. Nie licząc czasu na zmianę sposobu myślenia oraz naukę zespołu, pisanie testów jednostkowych może trwać nawet dwukrotnie dłużej niż w sposób „beztestowy”.
Sztuka programowania 3071 dni, 13 godzin, 54 minuty temu 198 źrodło rozwiń
Pokrycie kodu (ang. code coverage) testami to:(liczba wyrażeń pokrytych testami) / (liczba wszystkich wyrażeń) * 100% Innymi słowy, jest to procentowy współczynnik pokrycia kodu testami. Pokrycie kodu najczęściej mierzy się badając liczbę wyrażeń (ang. statements), choć niekiedy spotkać się można z pokryciem kodu opartym o: – ilość linii kodu, – ilość branchy (branch coverage), – ilość stanów (condition...
Sztuka programowania 3103 dni, 4 godziny, 45 minut temu 147 źrodło rozwiń
Rodzaje framerków do tworzenia atrap możemy podzielić na dwie kategorie:constrained (z ang. ograniczony)unconstrained (nieograniczony) Do pierwszej kategorii zaliczamy wszystkie do tej pory poznane frameworki do tworzenia atrap – Moq, FakeItEasy, NSubstite – a także Rhino Mocks, NMock oraz EasyMock. Ich cechą charakterystyczną jest ograniczona możliwość tworzenia atrap. Biblioteki te generują kod dziedzicząc...
Sztuka programowania 3166 dni, 4 godziny, 12 minut temu 150 źrodło rozwiń
Jedną z największych trudności dla osoby zaczynającej przygodę z testami jednostkowymi są: Metody i klasy static. Niederministyczne lub/i niepowtarzalne zależności.
Sztuka programowania 3183 dni, 4 godziny, 24 minuty temu 133 źrodło rozwiń
Nomenklatura w świecie TDD, a w szczególności ta dotycząca tworzenia atrap, jest źródłem wielu niejasności. Powodem takiego stanu jest fakt, że definicje różnią się w zależności od źródła, tj. książki, lub frameworka. W poprzednich częściach poznaliśmy trzy najbardziej popularne frameworki do tworzenia atrap dla .NET, dla których...
Sztuka programowania 3188 dni, 12 godzin, 59 minut temu 141 źrodło rozwiń
Pora przyjrzeć się trzeciemu najpopularniejszemu darmowemu frameworkowi, obok Moq i FakeItEasy, do tworzenia atrap w .NET – NSubstitute. Co wyróżnia tę bibliotekę:Główny nacisk położono na prostotę w semantyce. Składnia biblioteki ma w założeniu jak najbardziej przypominać naturalny język. Ilość wyrażeń lambda została zredukowana do minimum.
Dziś w kursie TDD przyjrzymy się frameworkowi do tworzenia atrap, konkurencyjnemu do wcześniej poznanego Moq. FakeItEasy, bo o nim mowa, jest darmowy, łatwy w nauce, ma wsparcie dla C# i VB.NET, różni się od innych bibliotek nie tylko semantyką, ale także nieco innym podejściem do tematu tworzenia atrap.
W tym artykule przyjrzymy się ciut bardziej zaawansowanym technikom tworzenia atrap przy pomocy Moq: argument matching, verify, callback. Wszystkie przykłady zostaną zaprezentowane przy użyciu Moq, jednak konkurencyjne frameworki w zakresie niewiele się różnią w zakresie tych technik.
Sztuka programowania 3252 dni, 13 godzin, 12 minut temu 94 źrodło rozwiń
Moq to najpopularniejszy framework do tworzenia atrap w .NET. W tej części kursu poznamy jego składnię i podstawowe możliwości.
Sztuka programowania 3259 dni, 14 godzin, 54 minuty temu 140 źrodło rozwiń