Unit-Tests mit jMock im PDE: Unterschied zwischen den Versionen

Aus Eclipse
Wechseln zu: Navigation, Suche
(Die Seite wurde neu angelegt: = PDE JUnit = Damit ein Plug-in während der Entwicklung getestet werden kann, müssen die zugehörigen Unit-Tests in einer eclipse-workspace-Umgebung ausgeführt werd...)
 
 
Zeile 122: Zeile 122:
  
 
Nach einem Linksklick im ''Package Explorer'' auf die Klasse ''InjectDependencyTestSuite'' kann im erscheinenden Kontextmenü auf ''Run As'' -> ''JUnit Plug-in Test'' geklickt werden. Dies startet die TestSuite und somit auch den Test.
 
Nach einem Linksklick im ''Package Explorer'' auf die Klasse ''InjectDependencyTestSuite'' kann im erscheinenden Kontextmenü auf ''Run As'' -> ''JUnit Plug-in Test'' geklickt werden. Dies startet die TestSuite und somit auch den Test.
 +
[[Kategorie:JMock]]
 +
 +
[[Kategorie:Testen]]

Aktuelle Version vom 15. Juli 2010, 15:26 Uhr

PDE JUnit

Damit ein Plug-in während der Entwicklung getestet werden kann, müssen die zugehörigen Unit-Tests in einer eclipse-workspace-Umgebung ausgeführt werden. Seit Milestone 3 von eclipse 3.0 ist PDE jUnit ein fester Bestandteil von eclipse. PDE jUnit kann jedoch auch von der folgenden Adresse heruntergeladen werden: http://www.dev.eclipse.org/viewcvs/index.cgi/~checkout~/jdt-ui-home/plugins/org.eclipse.jdt.junit/index.html

jMock als Plug-In einbinden

Damit jMock innerhalb von PDE-Unit-Tests eingesetzt werden kann, muss jMock ebenfalls als Plug-In verfügbar sein.

jMock besorgen

  • Unter http://www.jmock.org/ die aktuelle Version von jMock 2 herunterladen
  • Die ZIP-Datei an einer beliebigen Stelle entpacken

Das Plug-in erstellen

  • Mit File -> New -> Project... den Assistenten starten und unter Plug-in Development den Punkt Plug-in from existing JAR archives auswählen
  • Im Dialog JAR selection durch Add External... alle JARs im entpackten jMock-Verzeichnis auswählen
  • Im Dialog "Plug-in Project Properties" als Projektnamen org.jmock eingeben
  • Die Checkbox bei Unzip the JAR archives into the project darf nicht angekreuzt sein

Das Plug-in konfigurieren

Overview

Unter General Information können die Angaben Version, Name und Provider angegeben werden. (Z.B.: Version = 2.1.0, Name = jMock Plug-in, Provider = IntoJ Team, University of Hagen)

Dependencies

jMock 2 unterstützt jUnit in den Versionen 3 und 4. Aus diesem Grund wird unter Required Plug-ins durch Add... org.junit und org.junit4 ausgewählt.

Erstellung eines Test-Plug-Ins

Die Unit-Tests eines zu entwickelnden Plug-Ins werden in einem eigenen Plug-In Projekt geschrieben.

Das Plug-in erstellen

  • Mit File -> New -> Project... den Assistenten starten und unter Plug-in Development den Punkt Plug-in Project auswählen
  • Im Dialog Plug-in Project einen Projektnamen eingeben (Z.B.: org.intoJ.injectDependency.test)
  • Im Dialog Plug-in Content dürfen die Checkboxen bei Generate an activator... und This plug-in will make contributions... nicht angekreuzt sein. Bei Rich Client Application muss die Option No ausgewählt sein

Das Plug-in konfigurieren

Overview

Unter General Information können die Angaben Version, Name und Provider angegeben werden. (Z.B.: Version = 0.0.1, Name = InjectDependencyTest Plug-in, Provider = IntoJ Team, University of Hagen)

Dependencies

Die folgenden Abhängigkeiten müssen unter Required Plug-ins durch Add... hinzugefügt werden:

  • org.junit oder org.junit4
  • org.jmock
  • Das zu testende Plug-In (Z.B.: org.intoJ.injectDependency)
  • Zusätzliche eclipse-Plug-Ins (Z.B.: org.eclipse.ltk.core.refactoring)

Einbindung der Hilfsklasse TestProject

Erich Gamma und Kent Beck stellen die Klasse TestProject zur Verfügung, mit der eine Fixture für Unit-Tests erstellt werden kann. Diese Klasse kann hier --> Media:TestProject.txt <-- heruntergeladen werden.. Mit TestProject kann programmatisch ein Java-Projekt erzeugt werden.

Die Klasse TestProject wird in das folgende Verzeichnis kopiert: <PackageName des zu testenden Plug-Ins>.test.support (Z.B.: org.intoJ.injectDependency.test.support)

Beispiel

Klassen-Gerüste eines PDE-Unit-Tests, bei dem jMock und die Fixture durch TestProject eingesetzt werden kann.

Die TestSuite

Im Verzeichnis org.intoJ.injectDependency.test wird die Klasse InjectDependencyTestSuite mit dem folgenden Code erstellt:

public class InjectDependencyTestSuite {

  public static Test suite() {
    TestSuite suite = new TestSuite("org.intoJ.injectDependency tests");
    suite.addTestSuite(ExampleTest.class); 
    return suite;
  }  

}

Der Test

Im Verzeichnis org.intoJ.injectDependency.test.example wird die Klasse ExampleTest mit dem folgenden Code erstellt:

public class ExampleTest extends MockObjectTestCase {
  private TestProject project;
 
  @Override
  protected void setUp() throws Exception {
    project = new TestProject();
  }
 
  @Override
  protected void tearDown() throws Exception {
    project.dispose();
  }
 
  public void testExample() {
    //Test-Code
  }
  
}

Programmatisches Erstellen eines Java-Projekts

Beispielcode, bei dem eine Klasse Client ein Objekt einer Klasse Server erzeugt und als Objektattribut hält:

IPackageFragment serverPackage = project.createPackage("server");
IType server = project.createType(serverPackage, "Server.java",
  ("public class Server {" +
   "}"));
    
IPackageFragment clientPackage = project.createPackage("client");
IType client = project.createType(clientPackage, "Client.java",
  ("import server.Server;" +
   "" +
   "public class Client {" +
   "  private final Server server = new Server();" +
   "}"));

Starten des Tests

Nach einem Linksklick im Package Explorer auf die Klasse InjectDependencyTestSuite kann im erscheinenden Kontextmenü auf Run As -> JUnit Plug-in Test geklickt werden. Dies startet die TestSuite und somit auch den Test.