Hallo *.*,
ich bin derzeit dabei mich ein wenig in Cactus einzuarbeiten, stoße dabei aber auf ein Problem. Ich möchte ein Servlet testen und habe für dessen zwei Methoden Tests geschrieben. Der erste Test, "testGetDokumentennummer()" funktioniert einwandfrei.
Beim zweiten Test habe ich das Problem das die beginXXX()- und endXXX()-Methode zweimal aufgerufen wird. Beim beginXXX() stört mich das nichtmal, aber beim endXXX() ist beim zweiten mal der Content den ich vorher im geschrieben habe null.
Um das ganze zu verdeutlichen poste ich hier erstmal meine beiden Klassen, und anschließend die Ausgabe in der Eclipse-Console. Die Ausgaben auf der Console wurden nur zu Debugging-Zwecken eingebaut.
Die Testklasse:
Das Servlet:
Die Ausgaben in der Console (Tomcat):
Wenn mir jetzt jemand erklären kann warum die begin()- und end()-Methode jeweils zweimal aufgerufen wird und / oder was ich falsch mache, wäre ich verdammt dankbar!
ich bin derzeit dabei mich ein wenig in Cactus einzuarbeiten, stoße dabei aber auf ein Problem. Ich möchte ein Servlet testen und habe für dessen zwei Methoden Tests geschrieben. Der erste Test, "testGetDokumentennummer()" funktioniert einwandfrei.
Beim zweiten Test habe ich das Problem das die beginXXX()- und endXXX()-Methode zweimal aufgerufen wird. Beim beginXXX() stört mich das nichtmal, aber beim endXXX() ist beim zweiten mal der Content den ich vorher im geschrieben habe null.
Um das ganze zu verdeutlichen poste ich hier erstmal meine beiden Klassen, und anschließend die Ausgabe in der Eclipse-Console. Die Ausgaben auf der Console wurden nur zu Debugging-Zwecken eingebaut.
Die Testklasse:
Code:
import java.io.IOException;
import javax.servlet.ServletException;
import org.apache.cactus.ServletTestCase;
import org.apache.cactus.WebRequest;
import org.apache.cactus.WebResponse;
public class TestGetVersionServlet extends ServletTestCase {
public static final String PARAMETER_DOKNR = "doknr";
public static final String DOKNR_WRONG = "ABC";
public static final String DOKNR_CORRECT = "DEF";
public TestGetVersionServlet(String theName) {
super(theName);
}
public void beginGetDokumentennummer(WebRequest theRequest)
{
theRequest.addParameter(PARAMETER_DOKNR, DOKNR_CORRECT);
}
public void testGetDokumentennummer() {
GetVersionServlet servlet = new GetVersionServlet();
// Methode aufrufen!
String str = servlet.getDokumentennummer(request);
// Test
assertEquals("dokumentennummer", DOKNR_CORRECT, str);
assertFalse(str.equalsIgnoreCase("DCM4711"));
assertFalse(str == null);
}
public void beginPostVersionWrong(WebRequest theRequest)
{
theRequest.addParameter(PARAMETER_DOKNR, DOKNR_WRONG);
System.out.println("beginPostVersionWrong()");
}
public void testPostVersionWrong() {
System.out.println("testPostVersionWrong()");
GetVersionServlet servlet = new GetVersionServlet();
try {
servlet.doGet(request, response);
} catch (ServletException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
public void endPostVersionWrong(WebResponse theResponse)
{
// Get the returned content as a string
String content = theResponse.getText();
System.out.println("endPostVersionWrong.content: " + content);
// Do some asserts
assertTrue("content == null", content != null);
assertTrue(DOKNR_WRONG + " not found", content.indexOf(DOKNR_WRONG) != -1);
}
}
Das Servlet:
Code:
import java.io.IOException;
import java.io.PrintWriter;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
public class GetVersionServlet extends HttpServlet
{
public String getDokumentennummer(HttpServletRequest request) {
String dokNummer = request.getParameter("doknr");
return dokNummer;
}
public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException
{
response.setContentType("text/html");
PrintWriter out = response.getWriter();
out.println("<html><head></head><body>Dokumentennummer: " + getDokumentennummer(request) + "</body></html>");
out.close();
}
}
Die Ausgaben in der Console (Tomcat):
Code:
[...]
07.04.2009 14:17:36 org.apache.coyote.http11.Http11BaseProtocol init
INFO: Initializing Coyote HTTP/1.1 on http-8080
07.04.2009 14:17:36 org.apache.catalina.startup.Catalina load
INFO: Initialization processed in 436 ms
07.04.2009 14:17:36 org.apache.catalina.core.StandardService start
INFO: Starting service Catalina
07.04.2009 14:17:36 org.apache.catalina.core.StandardEngine start
INFO: Starting Servlet Engine: Apache Tomcat/5.5.27
07.04.2009 14:17:36 org.apache.catalina.core.StandardHost start
INFO: XML validation disabled
07.04.2009 14:17:36 org.apache.coyote.http11.Http11BaseProtocol start
INFO: Starting Coyote HTTP/1.1 on http-8080
07.04.2009 14:17:36 org.apache.jk.common.ChannelSocket init
INFO: JK: ajp13 listening on /0.0.0.0:8009
07.04.2009 14:17:36 org.apache.jk.server.JkMain start
INFO: Jk running ID=0 time=0/31 config=null
07.04.2009 14:17:37 org.apache.catalina.storeconfig.StoreLoader load
INFO: Find registry server-registry.xml at classpath resource
07.04.2009 14:17:37 org.apache.catalina.startup.Catalina start
INFO: Server startup in 546 ms
beginPostVersionWrong()
beginPostVersionWrong()
testPostVersionWrong()
endPostVersionWrong.content: <html><head></head><body>Dokumentennummer: DCM0815</body></html>
endPostVersionWrong.content:
Wenn mir jetzt jemand erklären kann warum die begin()- und end()-Methode jeweils zweimal aufgerufen wird und / oder was ich falsch mache, wäre ich verdammt dankbar!