SpecUnit-net : Une « Fluent Interface » pour les assertions des tests unitaires

Julien on nov 19th 2008

Olivier m'a fait remarqué que j'utilisais une "Fluent Interface" pour mes tests unitaires, au lieu des classiques Assert.* dans mon article précédent. Cela permet de remplacer le test suivant :

  1. [Test]
  2. public void should_create_a_giftboxItem_with_quantity_of_1()
  3. {
  4. Product product = ProductHelpers.CreateProduct();
  5. _gb.AddProduct(product);
  6.  
  7. Assert.AreEqual(1, _gb.Items.Count);
  8. Assert.AreEqual(product, _gb.Items[0].Product);
  9. Assert.AreEqual(1, _gb.Items[0].Quantity);
  10. }

par :

  1. [Test]
  2. public void should_create_a_giftboxItem_with_quantity_of_1()
  3. {
  4. Product product = ProductHelpers.CreateProduct();
  5. _gb.AddProduct(product);
  6.  
  7. _gb.Items.Count.ShouldEqual(1);
  8. _gb.Items[0].Product.ShouldEqual(product);
  9. _gb.Items[0].Quantity.ShouldEqual(1);
  10. }

On aime ou on aime pas, personnellement je trouve que c'est un peu plus lisible.
Pour ceux que ça intéressent, les méthodes d'extensions sont extraites de SpecUnit-net, et spécifiquement de cette classe.

Enjoy!

Filed in Alt.net | 2 responses so far

2 Responses to “SpecUnit-net : Une « Fluent Interface » pour les assertions des tests unitaires”

  1. Gauthier Segay déc 1st 2008 at 08:46 1

    C’est pratique, mais il manque une chose pour que ce soit un parfait substitutif, ce sont les surcharges avec le message en cas d’échec de l’assertion.

    En effet ces messages sont à mon sens aussi importants que le code:
    - pour la lisibilité de l’intention du test
    - avoir plus d’information qu’un numéro de ligne en cas d’échec

  2. Julien déc 2nd 2008 at 08:59 2

    Je m’étais fait la même remarque . C’est effectivement dommage que le message d’information ait été perdu en route.

    Le coté positif c’est que ca peut se rajouter très facilement :-)

Trackback URI | Comments RSS

Leave a reply