junit tutorial beginners what is junit testing
In diesem JUnit-Lernprogramm für Anfänger werden Unit-Tests, Testabdeckung und JUnit-Test-Framework sowie Beispiele für JUnit-Testfälle erläutert:
Diese JUnit-Reihe wurde vorbereitet, um sich auf unsere Zielgruppen zu konzentrieren, die absolute Anfänger sind, sowie auf diejenigen, die über gute Java- oder JUnit-Kenntnisse verfügen und ein großes Interesse daran haben, JUnit zu lernen.
Die Gesamtreihe wurde so dargestellt, dass Sie den Unterschied zwischen JUnit 4 und Junit 5 interpretieren können.
Lass uns jetzt JUnit erkunden !!
Was du lernen wirst:
wie man Zufallszahlen in c ++ zwischen 0 und 100 generiert
Liste der Tutorials in dieser JUnit-Reihe
Tutorial Nr. 1: JUnit Tutorial für Anfänger - Was ist JUnit Testing? (Dieses Tutorial)
Tutorial # 2: Laden Sie JUnit In Eclipse herunter, installieren Sie es und konfigurieren Sie es
Tutorial # 3: JUnit-Tests: So schreiben Sie JUnit-Testfälle mit Beispielen
Tutorial # 4: Was ist ein JUnit-Testgerät? Tutorial mit JUnit 4-Beispielen
Tutorial Nr. 5: Mehrere Möglichkeiten zum Ausführen von JUnit-Tests
Tutorial # 6: Liste der JUnit-Anmerkungen: JUnit 4 Vs JUnit 5
Tutorial Nr. 7: JUnit Ignore Test Case: JUnit 4 @Ignore Vs JUnit 5 @Disabled
Tutorial Nr. 8: JUnit Test Suite & Filtering Test Cases: JUnit 4 Vs JUnit 5
Tutorial Nr. 9: Ausführungsreihenfolge für JUnit-Tests: Reihenfolge der Tests JUnit 4 Vs JUnit 5
Tutorial Nr. 10: Verwendung von JUnit 5 Annotation @RepeatedTest mit Beispielen
Tutorial Nr. 11: Verschachtelte Klasse von JUnit 5: @ Verschachteltes Lernprogramm mit Beispielen
Tutorial Nr. 12: JUnit 5 Benutzerdefinierter Anzeigename und bedingte Testausführung
Tutorial Nr. 13: JUnit Vs TestNG - Was sind die Unterschiede?
JUnit Tutorial
Bei einem typischen TDD-Ansatz (Test Driven Development) konzentrieren sich Entwickler darauf, jeden Teil des von ihnen entwickelten Codes zu testen. Je besser ein Produkt getestet wird, desto besser ist seine Qualität. Wir alle wissen, dass das Testen mit jeder Phase des Softwareentwicklungslebenszyklus parallel verlaufen sollte.
Von der Anforderung und Analyse über Design und Entwicklung bis hin zur Wartung sollte jeder Phase eine geeignete Testphase zugeordnet sein. Unit-Tests nach der Entwicklung sind ratsam, um eine robuste Anwendung zu erstellen und einen optimierten Code zu haben.
Was ist Unit Testing?
Beim Unit-Test wird eine kleine Logik oder ein Code getestet, um zu überprüfen, ob die Ausgabe des Codes bei der Eingabe bestimmter Daten und / oder bei Erfüllung bestimmter Bedingungen erwartungsgemäß erfolgt. Normalerweise sollen die Unit-Tests unabhängig von den anderen Tests sein.
Unit-Tests sind nicht möglich, um komplexe Schnittstellen mit einer anderen Anwendung oder mit Drittanbietern / externen Diensten zu testen. Ein Komponententest zielt nur auf eine kleine Codeeinheit ab, die nur eine Methode oder eine Klasse sein kann.
Es hilft dem Entwickler, Probleme in der aktuellen Logik und Regressionsfehler aufgrund der aktuellen Änderung zu erkennen. Außerdem bietet es Einblicke, wie sich der aktuelle Code auf die zukünftige Implementierung auswirken kann.
Testabdeckung
Der Prozentsatz des Codes, der durch Komponententests getestet wird, wird aufgerufen Testabdeckung .
Ziel ist eine bessere und bessere Testabdeckung des Codes, der sich auch in Zukunft zur Regressionstestsuite summiert und dazu beiträgt, die automatisierte Testausführung und -verifizierung zu verbessern und damit den manuellen Aufwand für Regressionstests zu verringern.
Durch das automatische Ausführen von Tests können Software-Regressionsprobleme identifiziert werden, die durch Änderungen im aktuellen Code verursacht werden. Durch eine hohe Testabdeckung Ihres Codes können Sie Funktionen weiterentwickeln, ohne viele manuelle Tests durchführen zu müssen.
Viele kommen mit einer Frage zu Wie viel Testabdeckung ist wichtig . Die Antwort auf diese Frage lautet, dass es keine feste Regel dafür gibt, wie wichtig die Abdeckung von Tests ist. es ist alles wertend. Das Urteil wird durch die Erfahrung mit dem Anwendungsworkflow und die historische Kenntnis der bisher festgestellten Mängel verbessert.
Effiziente Tests müssen nicht unbedingt eine 100% ige Testabdeckung oder die Einbeziehung von Automatisierungstests und / oder Komponententests für jede einzelne Zweig- oder Pfadabdeckung bedeuten.
Bestimmte triviale Überprüfungen wie eine Validierungsfehlermeldung für ein Pflichtfeld, das seit Jahren nicht mehr fehlerhaft ist, müssen nicht in die Regressionssuite aufgenommen werden.
Manuelles Testen gegen automatisiertes Testen
Unit-Tests können über zwei Ansätze durchgeführt werden:
- Manuelle Prüfung
- Automatisiertes Testen
In beiden Ansätzen bleibt der Workflow gemeinsam:
- Testfall erstellen
- Überprüfung
- Nacharbeiten, wenn Korrekturen erforderlich sind
- Führen Sie den Testfall aus
- Analysieren Sie die Testergebnisse
Aus den folgenden Gründen wird das automatisierte Testen dem manuellen Testen vorgezogen:
Manuelles Testen | Automatisiertes Testen |
---|---|
Wenn ein Testfall manuell ausgeführt wird, ohne dass ein Werkzeug eingreift, wird dies als manuelles Testen bezeichnet. | Wenn ein Testfall mit Hilfe eines Werkzeugs ohne viel manuelles Eingreifen ausgeführt wird, spricht man von automatisiertem Testen. |
Wiederholte manuelle Anstrengungen sind enthalten. | Wiederholte manuelle Anstrengungen können vermieden werden. |
Menschliche Anstrengungen beim manuellen Testen können fehlerhaft und zeitaufwändig sein. | Automatisierungstests sind im Vergleich zu manuellen Anstrengungen schneller und fehlerfrei. |
Die erforderlichen Testressourcen dienen eher dazu, jeden Testfall manuell auszuführen, wodurch sich die Investition in die Ressourcen erhöht. | Es werden weniger Tester benötigt, um automatisierte Tests mit den angegebenen automatisierten Tools durchzuführen. Daher werden weniger Investitionen in Testressourcen getätigt, was die Rentabilität erhöht. |
Manuelle Tests müssen unter Berücksichtigung der zeitlichen Einschränkungen auf eine kleine Testabdeckung beschränkt werden. Daher besteht die Gefahr, dass viele Testszenarien übersprungen werden, wodurch auch das Risiko einer Fehlerleckage besteht. | Viele verschiedene Testszenarien können automatisiert und auch in Zeit- und Ressourcenkrisen mehrmals ausgeführt werden, was zu einer besseren Testabdeckung und einer besseren Qualität des Ergebnisses führt. |
Unit Test Framework
Wir haben vielleicht die nächste Frage, wie ein typischer Testfall für Automatisierungseinheiten aussieht und welchen Rahmen er verfolgt. Die Entwickler verwenden die Unit Test Framework zum Erstellen automatisierter Unit-Testfälle.
- Um zu überprüfen, ob der Code wie erwartet logisch funktioniert, wird ein Testfall mit einem bestimmten Prüfpunkt oder Überprüfungskriterium erstellt.
- Wenn der Testfall ausgeführt wird, bestehen entweder die Kriterien / Bedingungen oder schlagen fehl.
- Ein Protokoll wird gemäß dem Testfall-Workflow generiert.
- Das Framework meldet ein zusammengefasstes Ergebnis zu den bestandenen und fehlgeschlagenen Testfällen.
- Je nach Schwere des Fehlers wird der Testfall möglicherweise nicht weiter ausgeführt und die nachfolgende Ausführung wird möglicherweise gestoppt.
- Es kann bestimmte schwerwiegende Fehler geben, die im Protokoll gemeldet werden. Es wird jedoch kein fester Stopp angezeigt, sondern es wird fortgesetzt, ohne die weiteren Testschritte zu blockieren.
Was ist JUnit?
JUnit ist ein Open-Source-Framework, das zum Schreiben und Ausführen von Komponententests in der Programmiersprache Java verwendet wird. Es ist eines der bekanntesten Frameworks für Unit-Tests.
Das folgende Bild zeigt die verschiedenen bekannten Testwerkzeuge für Automatisierungseinheiten.
char zu string c ++
Nachfolgend sind die Attribute aufgeführt, mit denen JUnit verpackt ist:
- Es gibt eine riesige Liste von Anmerkungen, mit denen viele Funktionen für die Testmethoden identifiziert, ausgeführt und unterstützt werden können.
- Es gibt Zusicherungen zur Überprüfung der erwarteten Ergebnisse.
- Es bietet Test Runner zum Ausführen der Tests.
- JUnit bietet eine grundlegende integrierte Vorlage, mit der Sie in kürzester Zeit kleine, einfache Testfälle schreiben können.
- JUnit-Tests helfen Ihnen beim Schreiben unabhängiger Module, wodurch die Abdeckung des Tests und die Qualität der Anwendung verbessert werden.
- Es ermöglicht nicht nur die einfache Erstellung und Ausführung von Tests, sondern bietet dem Entwickler auch einen sauberen und klaren expliziten Bericht, der es dem Entwickler überflüssig macht, den Pfad der Berichte und Testergebnisse zu durchsuchen.
- Bis die Testausführung reibungslos verläuft, können Sie sich entspannen und den grün gefärbten Testfortschrittsbalken beobachten, der während der Ausführung angezeigt wird, während Sie in „Rot“ benachrichtigt werden, sobald der Test einen Überprüfungsprüfpunkt nicht besteht.
- Testsuiten können erstellt werden, um eine Sequenz oder einen verwandten Satz von Testfällen zusammenzustellen.
Beispiele für JUnit-Testfälle
Im Folgenden finden Sie zwei Beispiele für ein sehr einfaches Hello World-Programm, um zu verstehen, wie eine JUnit-Testklasse aussieht oder wie anders sie im Vergleich zu einer normalen Java-Klassendatei aussieht.
Beispiel 1:
Hier ist ein JUnit-Testfall HelloWorldJUnit.java, der überprüft, ob die Zeichenfolge 'Hello world' mit der Zeichenfolge 'hello world' übereinstimmt, die bei der Ausführung fehlschlägt, da bei der Übereinstimmung zwischen Groß- und Kleinschreibung unterschieden wird. Daher stimmen die beiden Zeichenfolgen nicht überein und der Test schlägt fehl .
Der Code für HelloWorldJUnit.java
package demo.tests; import static org.junit.Assert.*; import org.junit.Test; public class HelloWorldJUnit { @Test public void test() { assertEquals('Hello world','hello world'); } }
Beispiel 2:
c ++ wie man stringstream benutzt
Hier werden wir sehen, wie üblich Java Klassendatei interagiert mit einer JUnit Testfall. Wir schaffen eine Java Klassendatei HelloWorld_Java.java mit einem Konstruktor, mit dem wir einen String-Wert übergeben können, und einer Methode getText (), um den String-Wert abzurufen.
JUnit Testklasse HelloWorldJUnit.java wird so erstellt, dass das Klassenobjekt für HelloWorld_Java erstellt und der tatsächliche Zeichenfolgenwert an das Objekt übergeben wird. AssertEquals () von JUnit überprüft, ob die erwarteten und tatsächlichen Zeichenfolgenwerte übereinstimmen.
Der Code für HelloWorld_Java.java
package demo.tests; import static org.junit.Assert.*; import org.junit.Test; public class HelloWorldJUnit { @Test public void test() { assertEquals('Hello world','hello world'); } }
Der Code für HelloWorldJUnit.java
package demo.tests; public class HelloWorldJUnit{ private String s; public HelloWorld_Java(String s) { @Test public void test() { HelloWorld_Java hw=new HelloWorld_Java('Hello World'); assertEquals(hw.getText(),'Hello World'); } }
Das Ergebnis sieht wie folgt aus, wo die beiden Zeichenfolgen übereinstimmen. Daher ist JUnit Test bestanden.
Fazit
Wenn es darum geht, Ihnen einen schnellen Überblick darüber zu geben, was JUnit ist und was es tut, JUnit ist ein wunderschön gestaltetes Framework, mit dem Sie Unit-Tests auf automatisierte Weise erstellen und ausführen können.
Es ist ein Open-Source-Tool und doch so problemlos. Sei es die Erstellung von Testfällen oder die Ausführung eines Testfalls oder die Berichterstellung nach Ausführung oder Wartung der Tests, JUnit ist in jeder Hinsicht elegant. Ja, es kann auch elegant scheitern; und wir werden sehen, wie das in unserem nächsten Tutorial passiert, wenn wir weitermachen.
Über den Autor: Dieses Tutorial wurde von geschriebenShobhaD. Sie arbeitet als Projektleiterin und verfügt über mehr als 9 Jahre Erfahrung in den Bereichen Handbuch, Automatisierung und API-Tests.
Lassen Sie uns hier weiter auf jeden Aspekt von JUNIT näher eingehen.
Literatur-Empfehlungen
- Java Reflection Tutorial mit Beispielen
- Java String enthält () Method Tutorial mit Beispielen
- Jagged Array In Java - Tutorial mit Beispielen
- Ausführliche Eclipse-Tutorials für Anfänger
- Java SWING Tutorial: Container-, Komponenten- und Ereignisbehandlung
- Ternärer Operator in Java - Tutorial mit Beispielen
- 20+ MongoDB Tutorial für Anfänger: Kostenloser MongoDB Kurs
- Spock Tutorial: Testen mit Spock und Groovy