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 :

Problème de test de @controller avec Junit


Sujet :

Tests et Performance Java

  1. #1
    Futur Membre du Club
    Inscrit en
    Mars 2011
    Messages
    6
    Détails du profil
    Informations forums :
    Inscription : Mars 2011
    Messages : 6
    Points : 7
    Points
    7
    Par défaut Problème de test de @controller avec Junit
    Bonsoir,
    j'ai un soucis avec Junit, et j'aimerais avoir de l'aide s'il vous plait. Je n'arrive pas à écrire correctement les tests du controller.

    Un controller :
    MainController.java
    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
     
    .....
    import ...
     
    /**
     * url pour les personnes
     */
    @Controller
    @RequestMapping("/main")
    public class MainController {
     
    	//protected static Logger logger = Logger.getLogger("controller");
     
    	@Resource(name="personService")
    	private PersonService personService;
     
    	@Resource (name="visiteService")
    	private VisiteService visiteService;
     
    	/**
             * affiche les personnes
             * 
             * @return the name of the JSP page
             */
        @RequestMapping(value = "/persons", method = RequestMethod.GET)
        public String getPersons(Model model) {
     
        	//logger.debug("Received request to show all persons");
     
        	// liste les personnes
        	List<Person> persons = personService.getAll();
     
        	// Attach persons to the Model
        	model.addAttribute("persons", persons);
     
        	// This will resolve to /WEB-INF/jsp/personspage.jsp
        	return "personspage";
    	}
     
    	/**
             * les visites
             * 
             * @return the name of the JSP page
             */
        @RequestMapping(value = "/visites", method = RequestMethod.GET)
        public String getVisitesAll(Model model) {
     
        	///logger.debug("AFFICHE TOUTE lES PERSONNES :: getAll()");
     
        	// recherche des visites
        	List<Visite> visites = visiteService.getAll();
     
        	// ajout de la visite au Model
        	model.addAttribute("visites", visites);
     
        	// vers la page JSP
        	return "/visite/visitepage";
    	}
    }
    le test :
    MainControllerTest:
    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
     
    .....
    import fr.....
     
    public class MainControllerTest {
     
        private static final String PERSON_MODEL = "Persons";
        private EasyMock easyMock;    //private MockControl mockControl;
    	private PersonService personService;
    	private VisiteService visiteService;
        private MainController maincontroller;
     
     
        @Before
        public void init() {
            personService = easyMock.createMock(PersonService.class);
            maincontroller = new MainController();
        }
    	@Test
    	public final void testGetPersons() {
     
    		List<Person> persons = personService.getAll();
    	    easyMock.replay();
    	    Model model = null;
    	    model.addAttribute(PERSON_MODEL, persons);
    	    String viewName = maincontroller.getPersons( model.addAttribute(PERSON_MODEL, persons));
    	    easyMock.verify();
    	    assertEquals(viewName, "personspage");
    	    assertEquals("personspage", maincontroller.getPersons(model));
    	}
     
    	@Test
    	public final void testGetVisitesAll() {
    		//fail("Not yet implemented");
    	}
     
    }
    J'ai toujours une erreur avec junit à la ligne :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    model.addAttribute(PERSON_MODEL, persons);
    Si quelqu'un pouvait m'aider.
    Merci

  2. #2
    Membre régulier

    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Septembre 2011
    Messages
    37
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Septembre 2011
    Messages : 37
    Points : 89
    Points
    89
    Par défaut
    Une erreur style NullPointer ?

    Model model = null;
    model.addAttribute(PERSON_MODEL, persons);

  3. #3
    Futur Membre du Club
    Inscrit en
    Mars 2011
    Messages
    6
    Détails du profil
    Informations forums :
    Inscription : Mars 2011
    Messages : 6
    Points : 7
    Points
    7
    Par défaut Erreur NullPointerException
    Bonjour,
    Effectivement j'ai une erreur NullPointerException
    Trace :
    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
    java.lang.NullPointerException
    	at fr.chino.midl.controller.MainControllerTest.testGetPersons(MainControllerTest.java:47)
    	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
    	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    	at java.lang.reflect.Method.invoke(Method.java:616)
    	at org.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:44)
    	at org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:15)
    	at org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:41)
    	at org.junit.internal.runners.statements.InvokeMethod.evaluate(InvokeMethod.java:20)
    	at org.junit.internal.runners.statements.RunBefores.evaluate(RunBefores.java:28)
    	at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:76)
    	at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:50)
    	at org.junit.runners.ParentRunner$3.run(ParentRunner.java:193)
    	at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:52)
    	at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:191)
    	at org.junit.runners.ParentRunner.access$000(ParentRunner.java:42)
    	at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:184)
    	at org.junit.runners.ParentRunner.run(ParentRunner.java:236)
    	at org.eclipse.jdt.internal.junit4.runner.JUnit4TestReference.run(JUnit4TestReference.java:50)
    	at org.eclipse.jdt.internal.junit.runner.TestExecution.run(TestExecution.java:38)
    	at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:467)
    	at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:683)
    	at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.run(RemoteTestRunner.java:390)
    	at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.main(RemoteTestRunner.java:197)
    étant débutant j'ai un peu mal à trouver des réponses sur internet.
    Mais il semblerait que "Model" devrait être "ModelMap".
    Merci pour la réponse.

  4. #4
    Membre régulier

    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Septembre 2011
    Messages
    37
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Septembre 2011
    Messages : 37
    Points : 89
    Points
    89
    Par défaut
    Pour le NullPointer, c'est normal : tu initialises un objet à null, puis tu appelles une des méthodes de cet objet. Grosso modo tu écris null.method();

    Ce sont les deux lignes :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    Model model = null;
    model.addAttribute(PERSON_MODEL, persons);
    Il faut que tu initialises l'objet model avec ce qui va bien. Quelque chose du genre Model model = new ModelImpl();

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 3
    Dernier message: 02/07/2010, 15h50
  2. Réponses: 4
    Dernier message: 19/06/2009, 07h34
  3. [Article] Patrons de tests unitaires - illustrations avec JUnit
    Par Ricky81 dans le forum Tests et Performance
    Réponses: 0
    Dernier message: 16/06/2009, 23h04
  4. [Article] Patrons de tests unitaires - illustrations avec JUnit
    Par Ricky81 dans le forum Tests et Performance
    Réponses: 0
    Dernier message: 16/06/2009, 23h04
  5. Réponses: 0
    Dernier message: 16/06/2009, 23h04

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