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
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:
ö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.
- Schreiben Sie Ihren JUnit-Test und verändern Sie die Klassen
- Kopieren Sie die JAR-Dateien und fügen Sie sie in das Verzeichnis jmeter/lib/junit ein
- Starten Sie JMeter
- Wählen Sie Testplan aus
- Klicken Sie mit der rechten Maustaste auf
- Wählen Sie Threadgruppe aus
- Klicken Sie mit der rechten Maustaste auf
- Geben Sie meinen Komponententest in den Namen ein
- Geben Sie das Paket Ihres JUnit-Tests ein
- Wählen Sie die Klasse aus, die Sie testen möchten
- Wählen Sie eine Methode zum Testen aus
- Geben Sie den Test erfolgreich in die Erfolgsmeldung ein
- Geben Sie 1000 als Erfolgscode ein
- Geben Sie Test fehlgeschlagen in die Fehlermeldung ein
- Geben Sie 0001 als Fehlercode ein
- Wählen Sie die Thread-Gruppe aus
- Klicken Sie mit der rechten Maustaste auf
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.