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:
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 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"); } }
I send an SOS!
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()); } }
Merci beaucoup à quiconque tentera de débloquer le labyrinthe de mon cerveau sur ce sujet.
Partager