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

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Nouveau membre du Club
    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
    Points : 30
    Points
    30
    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 chevronné 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
    Points : 2 120
    Points
    2 120
    Par défaut
    salut,
    comment est ce que tu as injecté Eric

  3. #3
    Nouveau membre du Club
    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
    Points : 30
    Points
    30
    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 chevronné 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
    Points : 2 120
    Points
    2 120
    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