27. JUnit-Sampler-Tutorial

Dieses Tutorial versucht, das grundlegende Design, die Funktionalität und die Verwendung des neuen JUnit-Samplers für JMeter zu erklären. Der Sampler wurde in Version 2.1.2 von JMeter eingeführt. Frühere Versionen haben den Sampler nicht.

27.1 Gestaltung

Die aktuelle Implementierung unterstützt standardmäßige JUnit-Konventionen und -Erweiterungen wie oneTimeSetUp und oneTimeTearDown . Weitere Funktionen können auf Anfrage hinzugefügt werden. Der Sampler funktioniert wie der JavaSampler mit einigen Unterschieden.

  • Anstatt die Testschnittstelle von JMeter zu verwenden, durchsucht es die JAR-Dateien nach Klassen, die die TestCase - Klasse von JUnit erweitern. Dies bedeutet jede Klasse oder Unterklasse.
  • JUnit-Test-JAR-Dateien werden nach jmeter/lib/junit statt nach jmeter/lib kopiert
  • Der JUnit-Sampler verwendet keine Name/Wert-Paare für die Konfiguration. Der Sampler geht davon aus, dass setUp und tearDown den Test korrekt konfigurieren.
    Hinweis: Die Methoden setUp und tearDown müssen als public deklariert werden , damit JMeter sie verwenden kann.
  • Der Sampler misst die verstrichene Zeit nur für die Testmethode und beinhaltet nicht setUp und tearDown .
  • Jedes Mal, wenn die Testmethode aufgerufen wird, übergibt JMeter das Ergebnis an die Listener.
  • Die Unterstützung für oneTimeSetUp und oneTimeTearDown erfolgt als Methode. Da JMeter multithreaded ist, können wir oneTimeSetUp / oneTimeTearDown nicht so aufrufen, wie es Maven tut.
  • Der Sampler meldet unerwartete Ausnahmen als Fehler.

27.2 Funktionalität

Hier ist eine Beschreibung der Funktionalität.

Name
Name für die Probe. Dies ist das gleiche wie bei allen JMeter-Samplern.
Paketfilter
bietet eine Möglichkeit, die Klassen nach Paketnamen zu filtern.
Klassenname
der Name der zu testenden Klasse. Der Sampler durchsucht die JAR-Dateien in jmeter/lib/ext und jmeter/lib/junit nach Klassen, die den TestCase von JUnit erweitern .
Konstruktor-String
eine Zeichenfolge, die an den Zeichenfolgenkonstruktor der Testklasse übergeben wird.
Testmethode
der Name der Methode, die im Sampler getestet werden soll.
Erfolgsmeldung
eine beschreibende Nachricht, die angibt, was Erfolg bedeutet.
Erfolgscode
Ein eindeutiger Code, der anzeigt, dass der Test erfolgreich war.
Fehlermeldung
eine beschreibende Meldung, die angibt, was ein Fehler bedeutet.
Fehlercode
Ein eindeutiger Code, der anzeigt, dass der Test fehlgeschlagen ist
Fehlermeldung
eine Fehlerbeschreibung
Fehlercode
etwas Code für Fehler. Muss nicht eindeutig sein
Rufen Sie nicht setUp und tearDown auf
Stellen Sie den Sampler so ein, dass er setUp und tearDown nicht aufruft . Standardmäßig sollten setUp und tearDown aufgerufen werden. Das Nichtaufrufen dieser Methoden könnte den Test beeinträchtigen und ihn ungenau machen. Diese Option sollte mit Vorsicht verwendet werden.
Wenn die ausgewählte Methode oneTimeSetUp oder oneTimeTearDown ist, sollte diese Option aktiviert werden.
Assertionsfehler anhängen
Standardmäßig fügt der Sampler die Assert-Fehler nicht an die Fehlermeldung an. Aktivieren Sie die Option, um die Nachricht im Ergebnisbaum anzuzeigen.
Laufzeitausnahme anhängen
Standardmäßig hängt der Sampler die Ausnahmen nicht an die Fehlermeldung an. Aktivieren Sie die Option, um den Stacktrace anzuzeigen
JUnit-Anfrage
JUnit-Anfrage

Die aktuelle Implementierung des Samplers versucht zuerst, eine Instanz mit dem String-Konstruktor zu erstellen. Wenn die Testklasse keinen String-Konstruktor deklariert, sucht der Sampler nach einem leeren Konstruktor. Beispiel unten:

Konstruktorbeispiele
Leerer Konstruktor:
öffentliche Klasse meinTestfall {
  öffentlich meinTestfall() {}
}
String-Konstruktor:
öffentliche Klasse meinTestfall {
  öffentlich meinTestfall(Stringtext) {
    super(text);
  }
}

Standardmäßig stellt JMeter einige Standardwerte für den Erfolgs-/Fehlercode und die Meldung bereit. Benutzer sollten eine Reihe eindeutiger Erfolgs- und Fehlercodes definieren und diese einheitlich für alle Tests verwenden.

27.3 Verwendung

Hier ist eine kurze Schritt-für-Schritt-Anleitung.

  1. Schreiben Sie Ihren JUnit-Test und verändern Sie die Klassen
  2. Kopieren Sie die JAR-Dateien und fügen Sie sie in das Verzeichnis jmeter/lib/junit ein
  3. Starten Sie JMeter
  4. Wählen Sie Testplan aus
  5. Klicken Sie mit der rechten Maustaste auf Hinzufügen  →  Thread-Gruppe
  6. Wählen Sie Threadgruppe aus
  7. Klicken Sie mit der rechten Maustaste auf Hinzufügen  →  Sampler  →  JUnit-Anfrage
  8. Geben Sie meinen Komponententest in den Namen ein
  9. Geben Sie das Paket Ihres JUnit-Tests ein
  10. Wählen Sie die Klasse aus, die Sie testen möchten
  11. Wählen Sie eine Methode zum Testen aus
  12. Geben Sie den Test erfolgreich in die Erfolgsmeldung ein
  13. Geben Sie 1000 als Erfolgscode ein
  14. Geben Sie Test fehlgeschlagen in die Fehlermeldung ein
  15. Geben Sie 0001 als Fehlercode ein
  16. Wählen Sie die Thread-Gruppe aus
  17. Klicken Sie mit der rechten Maustaste auf Hinzufügen  →  Listener  →  Ergebnisbaum anzeigen

Ein Vorteil des JUnit-Samplers besteht darin, dass der Benutzer eine beliebige Methode aus einer Vielzahl von Komponententests auswählen kann, um einen Testplan zu erstellen. Dies sollte die Menge an Code reduzieren, die ein Benutzer schreiben muss, um eine Vielzahl von Testszenarien zu erstellen. Aus einem grundlegenden Satz von Testmethoden können mithilfe der GUI von JMeter verschiedene Sequenzen und Tests erstellt werden.

Zum Beispiel:

Testplan1

Testfall1.testImportKunde
TestCase2.testUpdateRandomCustomer
Testfall1.testSelect100
TestCase2.testUpdateOrder
Testfall1.testSelect1000

TestPlan2

Testfall1.testImportKunde
Testfall1.testSelect100
Testfall1.testSelect1000
TestCase2.testAdd100Customers

27.4 Allgemeine Richtlinien

Hier sind einige allgemeine Richtlinien zum Schreiben von JUnit-Tests, damit sie gut mit JMeter funktionieren. Da JMeter multithreaded läuft, ist es wichtig, bestimmte Dinge im Auge zu behalten.

  • Schreiben Sie die Methoden setUp und tearDown so, dass sie Thread-sicher sind. Dies bedeutet im Allgemeinen, dass Sie die Verwendung statischer Member vermeiden.
  • Machen Sie die Testmethoden zu diskreten Arbeitseinheiten und nicht zu langen Abfolgen von Aktionen. Indem das Testverfahren auf einem diskreten Vorgang gehalten wird, wird es einfacher, Testverfahren zu kombinieren, um neue Testpläne zu erstellen.
  • Vermeiden Sie es, Testmethoden voneinander abhängig zu machen. Da JMeter eine beliebige Reihenfolge von Testmethoden zulässt, unterscheidet sich das Laufzeitverhalten vom standardmäßigen JUnit-Verhalten.
  • Wenn eine Testmethode konfigurierbar ist, achten Sie darauf, wo die Eigenschaften gespeichert werden. Es wird empfohlen, die Eigenschaften aus der Jar-Datei zu lesen.
  • Jeder Sampler erstellt eine Instanz der Testklasse, also schreiben Sie Ihren Test so, dass die Einrichtung in oneTimeSetUp und oneTimeTearDown erfolgt .
  • Wenn Sie eine Klasse auswählen und keine Methoden angezeigt werden, bedeutet dies, dass der Sampler ein Problem beim Erstellen einer Instanz der Testklasse hatte. Der beste Weg, dies zu debuggen, besteht darin, Ihrem Klassenkonstruktor System.out hinzuzufügen und zu sehen, was passiert.
Go to top