HttpUnit

+ andere TechDocs
+ HttpUnit mit Maven
+ Selenium
+ Fit
+ httpunit.sourceforge.net
+


HttpUnit ermöglicht Black-Box-Akzeptanztests von Webanwendungen.

Es simuliert interaktive Website-Besuchssequenzen und prüft die Funktionalität von SSL, HTTP-Header, Frames, Tabellen, Formulare, Links, JavaScript und Cookies.

Weitere ähnliche Programmierbeispiele finden Sie unter Integrationstest mit HtmlUnit und HttpUnit und HTML-Akzeptanztest mit Fit.



Inhalt

  1. Einfaches HttpUnit-Beispiel
  2. Links auf weiterführende Informationen


Einfaches HttpUnit-Beispiel

  1. Installieren Sie ein aktuelles Java SE JDK.
  2. Legen Sie ein Projektverzeichnis an (z.B. \MeinWorkspace\HttpUnitMitGoogle), darunter die Verzeichnisse lib und src, und unter letzterem meinpackage:

    [\MeinWorkspace\HttpUnitMitGoogle]
     |- [lib]
     '- [src]
         '- [meinpackage]
    
  3. Downloaden Sie das HttpUnit-Archiv (z.B. httpunit-1.7.zip) von http://httpunit.sourceforge.net und entpacken Sie es in ein beliebiges temporäres Verzeichnis. Kopieren Sie daraus die httpunit.jar aus dem httpunit-1.7\lib-Verzeichnis und alle .jar-Libs aus dem httpunit-1.7\jars-Verzeichnis in das HttpUnitMitGoogle-lib-Verzeichnis.
  4. Speichern Sie im Unterverzeichnis src\meinpackage die folgende HttpUnit-Testklasse: GoogleHttpUnitTest.java

    package meinpackage;
    
    import com.meterware.httpunit.*;
    import junit.framework.*;
    
    public class GoogleHttpUnitTest extends TestCase
    {
      public void testGoogle() throws Exception
      {
        String url = "http://www.google.de/";
        String qry = "Torsten Horn Java";
        String lnk = "Weitere Ergebnisse von www.torsten-horn.de";
        String fnd = "http://www.torsten-horn.de";
    
        HttpUnitOptions.setExceptionsThrownOnScriptError( false );
    
        WebConversation conversation = new WebConversation();
        WebRequest      request      = new GetMethodWebRequest( url );
        WebResponse     response     = conversation.getResponse( request );
        assertNotNull( "Kein Response von URL '" + url + "'.", response );
        System.out.println( "\nResponse von URL '" + url + "'." );
    
        WebForm form = response.getFormWithName( "f" );
        assertNotNull( "Formular nicht gefunden.", form );
        System.out.println( "Formular gefunden." );
        form.setParameter( "hl", "de" );
        form.setParameter( "q", qry );
        response = form.submit( form.getSubmitButton( "btnG" ) );
        assertNotNull( "Seite mit Suchergebnissen zu '" + qry + "' nicht erhalten.", response );
        System.out.println( "Seite mit Suchergebnissen zu '" + qry + "' erhalten." );
    
        WebLink link = response.getLinkWith( lnk );
        assertNotNull( "Link zu '" + lnk + "' nicht gefunden", link );
        System.out.println( "Link zu '" + lnk + "' gefunden" );
        request = link.getRequest();
        response = conversation.getResponse( request );
        assertNotNull( "Seite zu '" + lnk + "' nicht erhalten.", response );
        System.out.println( "Seite zu '" + lnk + "' erhalten." );
    
        WebLink[] resultLinks = response.getLinks();
        assertNotNull( "Keine Links auf der Suchergebnis-Seite gefunden.", resultLinks );
        System.out.println( "" + resultLinks.length + " Links gefunden, darunter:\n" );
        for( int i=0; i<resultLinks.length; i++ ) {
          url = resultLinks[i].getURLString();
          if( 0 <= url.toLowerCase().indexOf( fnd )
              && !"".equals( resultLinks[i].getText() ) ) {
            System.out.println( url );
          }
        }
      }
    
      public static void main( String[] args ) throws Exception
      {
        junit.textui.TestRunner.run( GoogleHttpUnitTest.class );
      }
    }
    

    Die Methode 'testGoogle()' ruft über 'url' die Google-HTML-Seite auf, sucht darin das Formular 'f', setzt darin den Parameter für die Sprache 'hl=de' und den für die Suchabfrage 'q=qry' und betätigt den Submit-Button 'btnG'. In der Antwort-HTML-Seite wird der Link 'lnk' gesucht und aufgerufen. In der hierauf folgenden HTML-Seite werden alle Links auf die Domain 'fnd' gesammelt und angezeigt.

    Falls die Abfrage nicht funktioniert, muss überprüft werden, ob die Google-Bezeichnernamen 'f', 'hl', 'q' und 'btnG' sich vielleicht geändert haben, indem Sie den Quelltext der Google-Seiten studieren.

    Javadoc zum HttpUnit-API finden Sie unter http://httpunit.sourceforge.net/doc/api/.

    Javadoc zum JUnit-API (z.B. zu 'TestCase', 'assert...()', 'TestRunner') finden Sie unter http://junit.sourceforge.net/javadoc/.

    Infos zu JUnit finden Sie unter techdocs/java-junit.htm.

  5. Öffnen Sie ein Kommandozeilenfenster und geben Sie folgende Kommandos ein:

    cd \MeinWorkspace\HttpUnitMitGoogle

    rd bin /S /Q

    md bin

    javac -cp bin;lib/* -d bin src/meinpackage/*.java

    java -cp bin;lib/* meinpackage.GoogleHttpUnitTest

    Sie erhalten eine Liste, die einige der von Google gefundenen Links zeigt.



Links auf weiterführende Informationen





Weitere Themen: andere TechDocs | JUnit | Fit | Vorgehensmodelle zum Softwareentwicklungsprozess
© 1998-2007 Torsten Horn, Aachen