Ask yourself a question if your unit test project is a mixture of test methods or it shapes a specification that you can share with your client. If you really want to improve your testing experience look at NSpec.
O TDD napisano wiele, sam napisałem całkiem sporo i mówiłem całkiem sporo podczas kilku prelekcji. Używam TDD od ponad 5 lat już. Powinienem być super mega ninja pro TDD master. Mimo tego jakiś czas temu, pisząc bardzo prosty kod, na prawdę super prosty, naszła mnie taka refleksja: Jest zielone, jest ok. [Fact] public void Example_test() ...
Sztuka programowania 3694 dni, 18 godzin, 32 minuty temu 248 źrodło rozwiń
Temat testów parametryzowanych pojawił się przy okazji pisania naszego „drugiego” testu jednostkowego. Wtedy to skorzystaliśmy z atrybutu [TestCase] pozwalającym na zdefiniowanie zestawów wartości, które są przekazywane do metody testowej. Stosując atrybuty do testów parametryzowanych (m. in. TestCase, Values, Range, Random) ograniczamy liczbę naszych metod testowych i redukujemy ilość redundantnego kodu.
Sztuka programowania 3719 dni, 1 godzinę, 52 minuty temu 241 źrodło rozwiń
Last time I finished on negative values requirement. This will be the “almost” last part of the series about String Calculator Kata. There was some interest in more practical TDD examples in business context with services, layers, mocks and external dependencies like database. I will start next series to cover scenarios like that. Current kata is...
Sztuka programowania 3851 dni, 6 godzin, 57 minut temu 62 źrodło rozwiń
Często słyszę: “TDD powinno sprawiać, że oprogramowanie nie ma bugów”. To bardzo mylne pojmowanie wszystkiego, co się za TDD kryje. I dla tej praktyki mocno krzywdzące, bo gdy się okazuje, że tak nie jest, to ludzie się zniechęcają. Starałem się zdecydowanie podkreślać ten fakt podczas moich wystąpień na temat unit testów w zeszłym i za-przeszłym roku. Może w kontekście ostatnich wydarzeń w świecie unit...
Sztuka programowania 3857 dni, 10 godzin, 16 minut temu 284 źrodło rozwiń
TDD – commit by commit String Calculator Kata (III) Posted on by Michal Franc Previous post in the series – TDD – commit by commit String Calculator Kata (II) In the previous post I did a cleanup phase and added one feature to the String Calculator. The kata is not finished yet.Step VIII – Different Delimiters String Calculator should support different delimiters. Previous solution was just a hard-coded hack, still it was good enough solution. There wasn’t any requirement that would suggest a need f...
Sztuka programowania 3858 dni, 9 godzin, 9 minut temu 65 źrodło rozwiń
David H Hannson, autor Ruby on Rails opublikował artykuł: no i poszło… mleko się rozlało. Burza większa niż o sosnę (tą rozdartą – nie o brzozę, brzozy są niepolityczne). Uncle Bob napisał http://blog.8thlight.com/uncle-bob/2014/05/11/FrameworkBound.html ale jak wie...
2nd part of the serie about applied TDD with examples on commit by commit basis, with commentary about decision making process.. String Calculator TDD Kata.
Sztuka programowania 3907 dni, 17 godzin, 23 minuty temu 100 źrodło rozwiń
W tej części kursu zajmiemy się pojęciem inicjalizacji i czyszczenia danych. Wielkiej filozofii tutaj nie ma; w NUnit działa to tak:Jeśli chcemy, aby jedna z metod uruchamiała się przed każdym uruchomieniem naszego testu, aby np. inicjalizować dane, nakładamy na nią atrybut [SetUp].Jeśli zechcemy, aby metoda uruchamiała się po każdym uruchomieniu testu w celu np. czyszczenia danych — nakładamy atrybut [TearDown]...
Sztuka programowania 3918 dni, 2 godziny, 16 minut temu 143 źrodło rozwiń
TDD – commit by commit String Calculator (I) In this series I want to share my approach to TDD. I will do a simple TDD kata, sharing with you all my decision and thoughts. It’s called commit by commit beacuse you will find here links to github with each step. There will be a commentary to each one of these. I encourage you to comment and show me the flaws in my “style” of TDD coding. I also want to learn from you. I do know that my approach has its problems and there is allways a wayt to do something b...
Sztuka programowania 3931 dni, 18 godzin, 6 minut temu 100 źrodło rozwiń
In the last semester (Fall 2013) I had a pleasure to take course CIS706 – Translator Design (aka Compilers) with Dr Robby at Kansas State University. It was great experience! I think it is the best course I have ever taken. The way how this course is designed is just amazing...
In this video you can find answers to the following questions: what is unit test? when to write unit tests? how to write unit tests? what is a Test Driven Development?
Sztuka programowania 3968 dni, 3 godziny, 53 minuty temu 130 źrodło rozwiń
Jednym zdaniem NCrunch to narzędzie do automatycznego uruchamiania testów jednostkowych w Visual Studio. Pisałem już o NCrunch-u ale o tak świetnym dodatku warto napisać jeszcze raz i to z dwóch powodów. Po ostatniej prezentacji na ITAD na bielskiej ATH kilka osób pytało mnie o zielony pasek więc w ramach wyjaśnienia taki zielony pasek to wła...
Witajcie w Coding News – serii screencastów, w której omawiam najciekawsze wydarzenia i znaleziska minionego tygodnia.
W tej części opisane zostaną dobre i złe praktyki stosowane przy pisaniu testów jednostkowych. Co ciekawe, praktyki te odbiegają niekiedy od ogólnie przyjętych założeń i standardów kodowania. Przykładem może być zasada DRY—Don’t Repeat Yourself. W TDD kopiuj-wklej to niemal chleb powszedni; w TDD możemy stosować zasadę zgoła odwrotną—Do Repeat Yourself! Taka odrębność wynika z tego, że w kodzie testowym musimy zminimalizować prawdopodobieństwo pojawienia się błędu. Kod tes...
Sztuka programowania 4042 dni, 18 godzin, 53 minuty temu 406 źrodło rozwiń
Od ponad 3 lat używam TDD z lepszymi i gorszymi wynikami, zawsze koniec końców okazuje się, że kod napisany w TDD (nie TAD czyli nie dopisując testy post factum ale w prawdziwym TDD czyli pisząc testy NAJPIERW) sprawia najmniej problemów i jest najłatwiejszy do utrzymania i do modyfikacji. Czyli wydaje się, że TDD to świetne narzędzie, dlaczego zatem tak mało osób stosuję tą metodykę? Poniżej postaram się zebrać co popularniejsze wymówki. Jeśli macie swoje to proszę dopisywać. 1) Pisanie ...
Sztuka programowania 4139 dni, 10 godzin, 22 minuty temu 324 źrodło rozwiń
Dzisiaj będzie gadka motywacyjna o pisaniu testów więc jeśli jeszcze nie piszesz, może to Ciebie w końcu przekona. We wpisie Testowanie własnego ControllerFactory w MVC pisałem jak to zmarnowałem 6h na napisanie praktycznie jednego testu do kawałka kodu, który można napisać w 15 minut i przez dodatkowe 15 minut prze-klikać w kilku różnych przypadkach. Gdzie tu logika, gdzie tu sens. Pisząc CustomControllerFactory nie pisze się go z byle powodu, pisze się, ponieważ są potrzebne bardzo spec...
Sztuka programowania 4143 dni, 9 godzin, 32 minuty temu 170 źrodło rozwiń
Piękno ASP.NET MVC polega na tym, że prawie wszystko można wymienić, zamienić, przetestować… tyle tylko, że Ci goście z Microsoftu uwielbiają internal-e. Wszysko co się da dają jako internal a może nawet więcej. No i tyle byłoby z testowalności, ale do rzeczy. Piszę własny ControllerFactory ale nie zupełnie od zera. Chcę standardowej funkcjonalności ale też chcę ładować jak pluginy z luźnych dll-ek. Nic prostszego, wystarczy trochę zmodyfikować DefaultControllerFactory i jeśli standardowe...
W tej części omówię jak wykonać kilka prostych technik, tj. jak:zgrupować testy za pomocą atrybutu [TestCase],testować wyjątki,testować zdarzenia. Na tapetę idzie przykład dzielenia; chcemy napisać funkcjonalność i testy mając na uwadze, że:metoda Divide należy do klasy Calculator,metoda Divide przyjmuje dwa parametry wejściowe — obydwa typu int; zwracanym ...
Sztuka programowania 4166 dni, 5 godzin, 9 minut temu 164 źrodło rozwiń
Currently a huge number of projects is driven by TDD. (...) In average we spend more than 50% of our time developing front-end side of the app (JavaScript etc) but having in mind, that TDD is only applicable to back-end code. As a ReSharper user I’ll show how easy it is to set up a proper solution with another level of unit testing. (..) Let’s pick out the ColorCalculator as the target. This is a “class” that is responsible for calculating color values between RGB and HEX.