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 :

Tests Unitaires et boucles If imbriqu�es


Sujet :

Tests et Performance Java

  1. #1
    Membre averti
    Profil pro
    �tudiant
    Inscrit en
    Mars 2013
    Messages
    44
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activit� : �tudiant

    Informations forums :
    Inscription : Mars 2013
    Messages : 44
    Par d�faut Tests Unitaires et boucles If imbriqu�es
    Bonjour,

    je viens lancer un SOS. Je d�bute en tests unitaires et je dois bien avouer �tre totalement perdue. J'ai lu tout un tas de tutoriels en fran�ais et en anglais mais je n'arrive pas � bien comprendre. Je veux dire, je comprends les tests que je dois faire, mais je ne comprends pas COMMENT les faire.

    L� par exemple je suis bloqu�e sur des tests de If dans une autre boucle If. Je vous mets mon code juste apr�s.

    Dans ce code, je dois ente autre tester que si le 1er jour de la semaine est Monday, le calendrier enregistre bien que le 1er jour de la semaine � aller chercher est Monday. Je pense avoir trouv� comment tester si c'est bien Monday. Mais il faudrait aussi que je teste si ce n'est PAS Monday, et l� je ne comprends pas. De plus, si c'est bien Monday, il faudrait que je renvoie mon calendrier. Et l� je ne vois pas du tout comment on fait �a.

    Je suis d�sol�e, j'ai bien conscience de s�rement poser des questions b�tes mais je suis vraiment perdue l�. Je me m�lange les pinceaux je le sens bien.

    Ah si, autre chose, je ne peux pas tester si mon code va bien car j'ai une erreur "java.lang.NullPointerException" sur la ligne "siteService.getCalendar("ACTIVITY");" et je ne comprends pas d'o� elle vient. J'ai vraiment l'impression de tout avoir bien d�clar� pourtant.

    Bref, voici mon code. Merci � quiconque pourra m'aider et m'expliquer. Il faut � tout pris que je comprenne. Ce sera appr�ci� encore bien plus que tous les mercis que je posterai.

    Voici tout d'abord le code de ma classe � tester:

    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
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
     
    public Calendar getCalendar(String activity) {
       Optional<Site> site = siteRepository.findById(activity);
        if (site.isPresent()) {
            Calendar cal = GregorianCalendar.getInstance();
            if(site.get().getWeekFirstDay() .equals(OurConst.MONDAY)){
            	cal.setFirstDayOfWeek(java.util.Calendar.MONDAY);
          	}
         	else if (site.get().getWeekFirstDay() .equals(OurConst.SUNDAY)){
            	cal.setFirstDayOfWeek(java.util.Calendar.SUNDAY);
           	}
            else {
                throw new OurParamRuntimeException("Bad value for 'WEEK_FIRST_DAY' for the Site '"+site.get().getActivity()+"'. Expected ['"+OurConst.MONDAY+"' or '"+OurConst.SUNDAY+"'] and get '"+site.get().getWeekFirstDay()+"'");
            }
            if(site.get().getWeekNumberNumberingSystem().equals(OurConst.ISO)){
                cal.setMinimalDaysInFirstWeek(4);
            }
         	else if(site.get().getWeekNumberNumberingSystem().equals(OurConst.DOT)){
             	cal.setMinimalDaysInFirstWeek(7);
            }
            else{
                throw new OurParamRuntimeException("Bad value for 'WEEK_NUMBER_NUMBERING_SYSTEM' for the Site '"+site.get().getActivity()+"'. Expected ['"+OurConst.ISO+"' or '"+OurConst.DOT+"'] and get '"+site.get().getWeekNumberNumberingSystem()+"'");
            }
       	return cal;
        } 
        else {
           throw new IllegalArgumentException("Site must not be null");
        }
    }
    Et voici le code de test que j'ai fait par moi-m�me (� noter que mon siteRepository est mock� via @Mock):

    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
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
     
    @Test
    public void testCalendar() {
        Site site = new Site();
        Optional<Site> opt = Optional.of(site);
        Calendar cal = GregorianCalendar.getInstance();
     
    	//Test si pas de site
    	Mockito.when(siteRepository.findById(Mockito.anyString())).thenReturn(Optional.empty());
        try {
    		siteService.getCalendar("ACTIVITY");
            fail();
        }catch (IllegalArgumentException e) {
            assertEquals("Site must not be null", e.getMessage());
        }
     
        //Test si site
        Mockito.when(siteRepository.findById(Mockito.anyString())).thenReturn(opt);
        // assertEquals pour vérifier que l'on appelle bien 'cal'
        assertEquals(cal, siteService.getCalendar("ACTIVITY"));
     
        //Si pas = Monday ???
     
        //test : quand site est présent, le 1er jour de la semaine est Monday
        site.setWeekFirstDay(UdhConst.MONDAY);
        siteService.getCalendar("ACTIVITY");
        assertEquals("MONDAY", cal.getFirstDayOfWeek());
     
        //test : quand site est présent, le 1er jour de la semaine est Sunday
    	site.setWeekFirstDay(UdhConst.SUNDAY);
    	siteService.getCalendar("ACTIVITY");
        assertEquals("SUNDAY", cal.getFirstDayOfWeek());
     
        //test : quand site est présent, le 1er jour n'est ni Monday ni Sunday
        site.setWeekFirstDay("WEEKFIRSTDAY");
        try {
            siteService.getCalendar("ACTIVITY");
            fail();
        } catch (UdhParamRuntimeException e) {
            assertEquals("Bad value for 'WEEK_FIRST_DAY' for the site", e.getMessage());
        }
     
        //test: quand site est présent, le WeekNumberNumberingSystem est en ISO
        site.setWeekNumberNumberingSystem(UdhConst.ISO);
        siteService.getCalendar("ACTIVITY");
        assertEquals(4, cal.getMinimalDaysInFirstWeek());
     
        //test: quand site est présent, le WeekNumberNumberingSystem est en DOT
        site.setWeekNumberNumberingSystem(UdhConst.DOT);
        siteService.getCalendar("ACTIVITY");
        assertEquals(7, cal.getMinimalDaysInFirstWeek());
     
        //test: quand site est présent, le WeekNumberNumberingSystem n'est ni ISO ni DOT
        site.setWeekNumberNumberingSystem("WEEKNUMBERNUMBERINGSYSTEM");
        try {
            siteService.getCalendar("ACTIVITY");
            fail();
        } catch (UdhParamRuntimeException e) {
            assertEquals("Bad value for 'WEEK_NUMBER_NUMBERING_SYSTEM' for the site", e.getMessage());
        }
    }
    I send an SOS!

    Merci beaucoup � quiconque tentera de d�bloquer le labyrinthe de mon cerveau sur ce sujet.

  2. #2
    Membre Expert Avatar de jeffray03
    Homme Profil pro
    D�veloppeur informatique
    Inscrit en
    Juillet 2008
    Messages
    1 501
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Allemagne

    Informations professionnelles :
    Activit� : D�veloppeur informatique

    Informations forums :
    Inscription : Juillet 2008
    Messages : 1 501
    Par d�faut
    salut,
    comment est ce que tu as inject� Eric

  3. #3
    Membre averti
    Profil pro
    �tudiant
    Inscrit en
    Mars 2013
    Messages
    44
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activit� : �tudiant

    Informations forums :
    Inscription : Mars 2013
    Messages : 44
    Par d�faut
    Bonjour!

    Tout en haut de ma classe de tests, j'ai mon siteService en autowired (car je teste la classe siteServiceImpl, j'aurais d� le pr�ciser en effet) et le reste en mock:

    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    5
    6
     
    @Autowired
    SiteService siteService;
     
    @Mock
    SiteRepository siteRepository;
    Mais c'est tout ce que j'ai fait pour siteService. Est-ce que j'ai oubli� de faire quelque chose? (�a ne m'�tonnerait qu'� moiti� honn�tement, non, m�me pas � moiti� en fait, )

    J'ai aussi une question: dans ma classe j'ai des If dans une autre boucle If. En sortie de boucle If, je veux return mon calendrier cal. Du coup ma question c'est : comment dans un test est-ce qu'on g�re le return? Comment est-ce qu'on teste qu'il se fait bien et qu'il est juste?

    Encore merci pour toute aide.

  4. #4
    Membre Expert Avatar de jeffray03
    Homme Profil pro
    D�veloppeur informatique
    Inscrit en
    Juillet 2008
    Messages
    1 501
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Allemagne

    Informations professionnelles :
    Activit� : D�veloppeur informatique

    Informations forums :
    Inscription : Juillet 2008
    Messages : 1 501
    Par d�faut
    Salut,
    peux-tu nous envoyer toute l�erreur decencher.

    Merci

Discussions similaires

  1. Tests unitaires sur m�thodes imbriqu�es
    Par Maskass41 dans le forum C#
    R�ponses: 0
    Dernier message: 11/03/2012, 15h26
  2. Tests unitaires en C#
    Par Bouboubou dans le forum Test
    R�ponses: 2
    Dernier message: 01/10/2004, 13h03
  3. Probleme de test dans un boucle
    Par PrinceMaster77 dans le forum ASP
    R�ponses: 14
    Dernier message: 15/06/2004, 12h32
  4. [TESTS] Tests unitaires
    Par mathieu dans le forum Test
    R�ponses: 4
    Dernier message: 08/01/2004, 12h59

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