background preloader

Test unitaire

Facebook Twitter

Redirect?url= Related: Practical Testing Techniques for Windows Azure Applications If you're interested in unit testing, you've probably heard about mocking. The two topics go hand in hand. For developers, unit testing is a proven, effective, and cheap way to maintain code over the long haul. Thus it makes sense to learn about mocking as well. Mocking as a skill and mocking frameworks as a tool are handy things to have in your developer tool belt. Unit Tests Wikipedia defines unit testing as "a method by which individual units of source code, sets of one or more computer program modules together with associated control data, usage procedures, and operating procedures, are tested to determine if they are fit for use.

" Effective unit tests have these features: Quick: Unit tests run very quickly. When you have a suite of effective unit tests, you've struck gold. Related: Fundamentals of Unit Testing in ASP.NET Legacy Code It seems our legacy code is not ready to be tested. Let's define a new interface: Log In.

Unit testing with Dates | Jerrie Pelser. Overview In a recent app we developed, there was a particular piece of code which monitored user accounts and would send out a notification before their subscription expires. There were various sets of notifications which we emailed to them; one a week before expiration, one 3 days before, one the day before expiration, and a final one once the subscription has actually expired. We needed to write unit tests for all these different scenarios to ensure that the correct emails go out on the correct dates. In a situation like this it is fairly easy to mock the data access layer and email system to simulate certain conditions, but how does one go about simulating a specific date or time? Change the system clock Well, the first option is obviously to mess around with the system clock and set the date to a specific simulated date.

This is not a good idea… Why? Secondly this is unreliable for a number of reasons: Passing in the current date SendExpiryNotifications(DateTime.UtcNow); Using Noda Time. Tutoriel : Développement Dirigé par les Tests. En tenant compte de toutes les rotations et symétries possibles, les 12 pentaminos peuvent présenter en tout 63 variantes. Nous allons simplement réutiliser une modélisation de ces pentaminos déjà faite par David Eck (avec sa permission), sous la forme suivante : Toutefois, le TDD nous interdit d'écrire du code avant d'avoir un test. Quel test écrire ici ? Eh bien nous pourrions vérifier qu'il y a bien 63 éléments en tout (une erreur de copier/coller est toujours possible).

Donc le test pourrait être Assert.That(ListeDePentaminos().Count, Is.EqualTo(63)); En fait il faut que cette liste soit portée par une classe, donc nous choisissons d'introduire une classe FabriqueDePentaminos comme ci-dessous: Assert.That(FabriqueDePentaminos.ListeDePentaminos().Count, Is.EqualTo(63)); Le test étant défini, nous avons maintenant la permission d'écrire du code : ajoutons un fichier Pentaminos.cs au projet, fichier qui contiendra la classe de test Pour avoir la barre verte, on peut écrire le code suivant : TDD - Le développement piloté par les tests. Principes de base La méthode traditionnelle de la rédaction des tests unitaires consiste à rédiger les tests d'une portion d'un programme (appelé unité ou module ) afin de vérifier la validité de l'unité implémentée.

Voici un schéma représentant le principe de la méthode traditionnelle : Comme on peut le constater, le test découle du code, ce qui est contraire au principe même de TDD. La méthode TDD quand à elle consiste à rédiger les tests unitaires avant de procéder à la phase de codage. Voici un schéma représentant le principe de la méthode TDD : Ici, le développeur écrit un peu de code de test et ensuite implémente le métier. Démarche à suivre La démarche à suivre pour mettre en place cette méthode est décomposée en trois phases appelé RGR(aussi appelé la Mantra). Les deux premières phases sont nommées d’après la couleur de la barre de progression dans les outils de test unitaires comme JUnit(Red pour échec et Green pour réussite) Cycle de développement Avantages. Les Tests en Trois Temps (3T) en pratique. Suite à la publication de mon article sur les Tests en Trois temps ("3T")Présentation de 3T et aux différentes questions pratiques que j'ai reçues, je me suis lancé dans la rédaction d'un second article facile à lire.

Je ne voulais pas paraphraser le premier article et, en même temps, je voulais utiliser un ton léger. Pour cela je me suis décidé à présenter "3T" sous la forme d'un miniroman, en m'inspirant de mes collègues passés pour inventer les personnages, et des problématiques courantes pour illustrer un projet fictif. Pour rappel, "3T" est une version simplifiée (et une vision personnelle) des TDD (les Développements Guidés par les Tests). Je suis parti du constat que les TDD sont souvent accusés, à tort, de ralentir les projets, d'être complexes et de couter cher. Le principe de base de "3T" est de mécaniser le processus de développement en subdivisant les interventions et les rôles.

Les codes présentés dans l'article sont volontairement simplifiés pour faciliter la lecture. TDD, une affaire de design. Le sujet de la semaine, c’est une longue conversation sur Twitter entre Sandro Mancuso (@sandromancuso), Ron Jeffries (@ronjeffries), et Joe Rainsberger (@jbrains) et quelques autres sur les relations entre TDD et le Design. On rappelle que TDD est habituellement présenté comme une technique de design. Sandro a commencé par affirmer que TDD avait besoin de compétences en design au préalable. I believe software design should be taught before TDD. TDD can’t lead to good design if we don’t know what good design looks like. – @sandromancuso Joe et Ron ont challengé cette affirmation, mais davantage sur la forme que sur le fond. Au fil de cette conversation il apparaît clairement un contraste entre la vision de TDD des pionniers à la fin des années 90, et la vision des nouveaux praticiens TDD de la fin des années 2000.

Pour les pionniers, l’industrie logicielle à la fin des années 90 avait un focus marqué sur le design. On faisait aussi du design avant de coder (Big Design Upfront, BDUF).