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

Servlets/JSP Java Discussion :

TESTS UNITAIRES D'UNE SERVLET


Sujet :

Servlets/JSP Java

  1. #1
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2014
    Messages
    14
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 30
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2014
    Messages : 14
    Points : 10
    Points
    10
    Par défaut TESTS UNITAIRES D'UNE SERVLET
    Bonjour,

    J'ai un petit souci pour résoudre ce problème car je n'ai jamais fait de test auparavant.


    voilà le sujet :

    Écrire les tests unitaires pour la classe fr.epsi.mvc.InscriptionServlet.
    Attention, la méthode publique d'invocation d'une servlet est Servlet#service(ServletRequest, ServletResponse). Les méthodes doXXX (doGet, doPost, ...) sont des méthodes protected qui sont appelées par la méthode Servlet#service(ServletRequest, ServletResponse) selon la valeur de retour de la méthode HttpServletRequest#getMethod().

    Pour cet exercice, à vous de choisir la stratégie que vous utiliserez pour fournir les doublures(mock) nécessaires au SUT.

    quelqu'un pourrait me renseigner sur un bon tutoriel ou une suggestion car je n'arrive pas à voir une meilleure solution. j'avoue que je suis débutante en ce qui concerne les tests.

    voici le code de la servlet
    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
     
    @WebServlet("/inscription")
    public class InscriptionServlet extends HttpServlet {
     
    	private static final long serialVersionUID = -8710385077137206045L;
     
    	@Override
    	protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
    		forward("inscription.jsp", req, resp);
    	}
     
    	@Override
    	protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
    		req.setCharacterEncoding("UTF-8");
    		Inscription inscription = new Inscription();
    		inscription.setLogin(req.getParameter("login"));
    		inscription.setEmail(req.getParameter("email"));
    		inscription.setConditionsGeneralesApprouvees(Boolean.parseBoolean(req.getParameter("conditionsGeneralesApprouvees")));
     
    		try {
    			inscription.validate();
    			req.setAttribute("inscription", inscription);
    			forward("inscriptionOk.jsp", req, resp);
    		} catch (InscriptionInvalideException e) {
    			req.setAttribute("errors", e.getErrorMessages());
    			forward("inscription.jsp", req, resp);
    		}
    	}
    	private void forward(String page, HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
    		RequestDispatcher dispatcher = req.getServletContext().getRequestDispatcher("/WEB-INF/views/" + page);
    		dispatcher.forward(req, resp);
    	}
    }
    je vous remercie pour toute suggestion.

    Avatar75

  2. #2
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2014
    Messages
    14
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 30
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2014
    Messages : 14
    Points : 10
    Points
    10
    Par défaut
    Bonjour,

    Voici un lien vers un tutoriel :

    http://httpunit.sourceforge.net/doc/...nit-intro.html

    seulement je ne sais pas où trouver ServletRunner pour test ma servlet.
    Ils disent qu'il faut un jsdk. est ce que jsdk est différent du jdk.

    merci pour toute réponse.
    avatar7575.

  3. #3
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2014
    Messages
    14
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 30
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2014
    Messages : 14
    Points : 10
    Points
    10
    Par défaut
    Bonjour,

    J'ai utilisé mockrunner plutôt que servletunit car pour ce dernier il n'y pas beaucoup de documentation.
    seulement, je bloque sur ce point :
    mockInscription.setLogin(tester.addRequestParameter("login", "KarimaMakhtas")); ce code ne peut fonctionner car tester.addRequestParameter("login", "KarimaMakhtas") est void.

    du coup voilà ce que j'ai fait mais ça fonctionne pas. l'objet mockInscription est null.
    Merci de me dire ce qui va pas.
    Comme je suis débutante en programmation, il m'est difficile de réaliser les tests.

    voici le code :
    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
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
     
    package fr.epsi.mvc;
     
    import static org.junit.Assert.*;
    import javax.servlet.http.HttpServletRequest;
    import javax.servlet.http.HttpServletResponse;
    import org.junit.Before;
    import org.junit.Test;
    import org.mockito.Mock;
    import static org.mockito.Mockito.*;
    import com.mockrunner.mock.web.MockHttpServletRequest;
    import com.mockrunner.mock.web.MockHttpServletResponse;
    import com.mockrunner.mock.web.WebMockObjectFactory;
    import com.mockrunner.servlet.BasicServletTestCaseAdapter;
    import com.mockrunner.servlet.ServletTestModule;
     
    public class InscriptionServletTest2 extends BasicServletTestCaseAdapter {
     
    	private ServletTestModule tester;
    	private WebMockObjectFactory factory;
    	private InscriptionServlet test;
     
    	@Mock
    	private HttpServletRequest request;
     
    	@Mock
    	private HttpServletResponse response;
     
    	@Before
    	public void setup() throws Exception {
    		super.setUp();
    		factory = new WebMockObjectFactory();
    		tester = new ServletTestModule(factory);
    		createServlet(InscriptionServlet.class);
    		test = new InscriptionServlet();
     
    	}
     
    	@Test
    	public void doPostOKInscription() throws Exception {
     
    		HttpServletResponse mockedResponse = mock(HttpServletResponse.class);
    		HttpServletRequest mockedRequest = mock(HttpServletRequest.class);
    		Inscription mockInscription = mock(Inscription.class);
     
    		// test positif
     
    		tester.addRequestParameter("login", "KarimaMakhtas");
    		tester.addRequestParameter("email", "email@email.com");
    		tester.addRequestParameter("conditionsGeneralesApprouvees",
    				String.valueOf(true));
     
    		mockInscription.setEmail("email@email.com");
    		mockInscription.setLogin("KarimaMakhtas");
    		mockInscription.setConditionsGeneralesApprouvees(true);
     
    		try {
    			mockInscription.validate();
    			mockInscription.getCreation();
    			tester.setRequestAttribute("mockInscription", mockInscription);
     
    			// instancier la servlet
    			createServlet(InscriptionServlet.class);
     
    			factory.getMockResponse();
     
    			Inscription inscription = new Inscription();
    			inscription.setEmail("email@email.com");
    			inscription.setLogin("KarimaMakhtas");
    			inscription.setConditionsGeneralesApprouvees(true);
    			inscription.validate();
    			inscription.getCreation();
     
    			when(mockedRequest.getParameter("login")).thenReturn(
    					inscription.getLogin());
    			//String login = mockedRequest.getParameter("login");
    			when(mockedRequest.getParameter("email")).thenReturn(
    					inscription.getEmail());
    			when(mockedRequest.getParameter("conditionsGeneralesApprouvees"))
    					.thenReturn(
    							String.valueOf(inscription
    									.isConditionsGeneralesApprouvees()));
    			mockedResponse.sendRedirect("inscriptionOk.jsp");
     
    			mockedRequest.getMethod();
    			//assertEquals("same user", mockInscription, inscription2);
    			assertNotNull(mockInscription.getCreation());
     
    		} catch (InscriptionInvalideException e) {
     
    			tester.setRequestAttribute("errors", e.getErrorMessages());
    			mockedResponse.sendRedirect("inscription.jsp");
    			mockedRequest.getMethod();
    			assertNull(mockInscription.getCreation());
    		}
    	}
     
    	private Inscription getInscriptionMock(String login, String email,
    			Boolean conditions) {
     
    		Inscription inscriptionMock = mock(Inscription.class);
    		when(inscriptionMock.getLogin()).thenReturn(login);
    		when(inscriptionMock.getEmail()).thenReturn(email);
    		when(inscriptionMock.isConditionsGeneralesApprouvees()).thenReturn(
    				conditions);
    		return inscriptionMock;
    	}
    }
     
    Merci pour toute suggestion.

Discussions similaires

  1. Réponses: 0
    Dernier message: 09/05/2011, 11h38
  2. Test (unitaire?) d'une interface GTK
    Par Hades_L dans le forum GTK+ avec C & C++
    Réponses: 0
    Dernier message: 11/11/2008, 11h29
  3. Test unitaire sur une servlet
    Par ReaM dans le forum Tests et Performance
    Réponses: 3
    Dernier message: 12/08/2008, 12h08
  4. test unitaire d'une action qui lance un thread
    Par jawed84 dans le forum Struts 1
    Réponses: 1
    Dernier message: 29/02/2008, 17h12
  5. Test unitaire d'une interface : Junit ?
    Par TabrisLeFol dans le forum Tests et Performance
    Réponses: 11
    Dernier message: 22/09/2007, 20h22

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