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:
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:
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:
1 2
|
model.addAttribute(PERSON_MODEL, persons); |
Si quelqu'un pouvait m'aider.:cry:
Merci ;)
Erreur NullPointerException
Bonjour,
Effectivement j'ai une erreur NullPointerException
Trace :
Code:
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.