IdentifiantMot de passe
Loading...
Mot de passe oubli� ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les r�ponses en temps r�el, voter pour les messages, poser vos propres questions et recevoir la newsletter

Tests et Performance Java Discussion :

[Java - Junit] Des tests trop pouss�s, sont-ils mauvais ?


Sujet :

Tests et Performance Java

  1. #1
    Membre tr�s actif
    Profil pro
    Inscrit en
    F�vrier 2006
    Messages
    188
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : F�vrier 2006
    Messages : 188
    Par d�faut [Java - Junit] Des tests trop pouss�s, sont-ils mauvais ?
    Bonjour,

    Je me pose une question. Faire des tests trop avanc�s, j'entends par l�, v�rifier que tous les mocks sont bien appel�s, un certain nombre de fois, avec des captor, etc. (exemple :

    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    when(myMock.maFonction(captor)).thenReturn(...); 
    verify(myMock, times(4).maFonction(captor)); 
    assertEquals(captor.getValue(), moObjet);
    )

    Est-ce une mauvaise pratique ? Souvent, ce genre de tests ne sont qu'une "duplication" du code de production et quand ce dernier change, on est souvent oblig�s de changer le code de tests lui-m�me ce qui fait perdre de l'int�r�t au process. En somme, est-ce qu'�crire des tests trop pouss�s n'est-il pas contreproductif?

    Je n'arrive pas vraiment � trouver de documentation sur �a, si vous avez une id�e

  2. #2
    Membre chevronn�
    Homme Profil pro
    Architecte technique
    Inscrit en
    Mai 2020
    Messages
    347
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activit� : Architecte technique

    Informations forums :
    Inscription : Mai 2020
    Messages : 347
    Par d�faut
    Bonjour,

    Vous ne trouverez pas de "documentation" � proprement parler, c'est de l'appr�ciation.

    // ! Avis personnel
    Je ne dirais pas que des tests trop pouss�s sont mauvais. Mais plut�t qu'il faut tester ce qui est utile.
    Comem vous le dites, vos tests sont de la duplication de la logique. Est-ce vraiment important de savoir que votre m�thode va appeler 4 fois une autre m�thode ? Je ne crois pas. Ce qui est iportant c'est de v�rifier que la sortie soit correcte.

    Imaginons que `isBirthDay` doive retourner retourner true ou false ou lancer une exception si la date de naissance est invalide.
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    5
    6
     
      // Pseudo code
      boolean isBirthDay(Person p) {
         validator.validateOrThrow(p.getBirthDay());
         return today().equals(p.getBirthDay())
      }
    On � pas besoin de v�rifier que `validator` ou `p.getBirthDay()` soient appel�es. Ce que l'on veut tester c'est les entr�es et sorties :

    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
     
      // Pseudo code
      must_return_true_when_birth_date_is_today() {
        Person p = new Person(dateOfToday())
        assertTrue(isBirthDay(p))
      }
     
      must_return_false_when_birth_date_is_not_today() {
        Person p = new Person(notToday())
        assertTrue(isBirthDay(p))
      }
     
      must_fail_when_birth_day_is_absent() {
        Person p = new Person("")
        assertFailWithException(isBirthDay(p))
      }
    Le probl�me avec votre exemple est que, si vous changez la fa�on de valider la date, il faudra changer vos tests. C'est pourtaht l'objectif inverse qui est vis�, id�alement vous devriez pouvoir changer l'impl�mentation sans modifier les tests.

  3. #3
    Membre tr�s actif
    Profil pro
    Inscrit en
    F�vrier 2006
    Messages
    188
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : F�vrier 2006
    Messages : 188
    Par d�faut
    Merci pour ta r�ponse. Je comprends ce que tu veux dire

Discussions similaires

  1. Ex�cuter des tests JUnit depuis Java
    Par batchi dans le forum Langage
    R�ponses: 5
    Dernier message: 22/11/2013, 18h40
  2. Java: GeoTools/GeoToolKit/Openmap. O� en sont-ils?
    Par grunt2000 dans le forum SIG : Syst�me d'information G�ographique
    R�ponses: 10
    Dernier message: 01/01/2011, 16h03
  3. R�ponses: 16
    Dernier message: 04/09/2010, 01h17
  4. Pourquoi des titres de discussions sont-ils en gras et d'autres pas ?
    Par ybruant dans le forum Mode d'emploi & aide aux nouveaux
    R�ponses: 2
    Dernier message: 16/11/2006, 15h22

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo