IDEA IntelliJ Wie kann man ein JUnit Test bei IntelliJ durchführen?

In IntelliJ hast Du eine Projektverwaltung. Und im Projektfenster können Ordner markiert sein als Source Ordner oder Test Ordner

Wenn Du sowas hast, dann kannst Du:
- in dem Project Fenster auf einen Ordner (ab dem für Tests markierte Ordner) klicken und "Run all Test" sagen
- Auf eine Klasse innerhalb dieses Ordners klicken und Run all Tests sagen
- Wenn so eine Klasse geöffnet ist, dann kannst Du bei der class Zeile auf die grünen Pfeile klicken um alle Tests der Klasse zu starten oder bei einem einzelnen Test den grünen Pfeil drücken um nur diesen Test auszuführen.

Das wär eine Möglichkeit. Es gibt noch einiges mehr. So wird eine Run Configuration erstellt und die kannst Du immer wieder neu starten.
Oder je nach Projekt kann man das auch über weitere Wege starten (z.B. bei Maven aus dem Maven Tool-Fenster).
 
Vielen Dank erstmal für die ausführliche Erklärung und sorry für meine Blödheit, ich komme trotzdem damit nicht weiter.
Ich habe neben "src" Ordner nur noch "out" und ".idea"
Also einzige was ich dort gefunden habe ist, wenn man oben auf Projekt Dropdown-Liste
klickt, sieht man ein Test (Project > Project Files > Tests) Wenn man aber drauf klickt dann sieht man das es noch keine erstellt hat. Das ist aber hier die Frage wie soll man es erstellen?
In IntelliJ hast Du eine Projektverwaltung. Und im Projektfenster können Ordner markiert sein als Source Ordner oder Test Ordner

Wenn Du sowas hast, dann kannst Du:
- in dem Project Fenster auf einen Ordner (ab dem für Tests markierte Ordner) klicken und "Run all Test" sagen
- Auf eine Klasse innerhalb dieses Ordners klicken und Run all Tests sagen
- Wenn so eine Klasse geöffnet ist, dann kannst Du bei der class Zeile auf die grünen Pfeile klicken um alle Tests der Klasse zu starten oder bei einem einzelnen Test den grünen Pfeil drücken um nur diesen Test auszuführen.

Das wär eine Möglichkeit. Es gibt noch einiges mehr. So wird eine Run Configuration erstellt und die kannst Du immer wieder neu starten.
Oder je nach Projekt kann man das auch über weitere Wege starten (z.B. bei Maven aus dem Maven Tool-Fenster).
 
Ok, es geht also erst einmal um die reine Erstellung. Ich gehe im Folgenden davon aus, dass Du ein einfaches Java Projekt in IntelliJ erzeugt hast.

1. Leg erst einmal einen neuen Ordner in deinem Projekt an. Das kann z.B. test-src sein. Da dann Rechtsclick Mark directory as -> Test Sources Root

2. Dann brauchst Du ggf. noch die Abhängigkeit zu JUnit. Dazu gehst Du im Projektfenster auf dein Projekt, Rechtsclick und Open Module Settings.
2.1. Dann gehst Du auf Libraries und dann in der mittleren Spalte auf das + -> from Maven um dann im Fenster einzugeben: org.junit.jupiter:junit-jupiter:5.8.0 -> nachdem Laden fragt IntelliJ, ob diese Abhängigkeit zu dem Modul hinzufügen soll. Das muss kommen.
2.2. Wechsel nun von Libraries auf Modules - da solltest Du das Modul deines Projektes sehen. Und da musst Du die Dependencies anpassen:
Du solltest junit-jupiter dort sehen mit einem Compile. Das Compile änderst Du auf Test, denn junit brauchst Du nur für fürs Testen.

3. Erster Unit-Test in test-src erstellst Du eine neue Java Klasse (FirstTest oder wie Du diese nennen willst). Hinweis: Ich gehe hier einfach mal kurz vor, wie ich sowas machen würde - incl. der "IntelliJ Unterstützung".
3.1 In der Klasse schreibst Du eine Methode:
Java:
public void testJUnit() {
}
3.2 Vor die Methode schreibst Du dann @test und IntelliJ sollte schon beim Schreiben vorschlagen: org.junit.jupiter.api.Test so dass bei einem Abschicken mit Return Taste auch automatisch der Import kommt.
3.3 In die Methode kommt nun einfach ein fail("Unittest runs!"); Das fail ist rot und Du kannst dann ein Alt Return (oder über die "Glühbirne") mit IntelliJ ein Import hinzufügen: Import static method ..... Assertions.fail

Und schon hast Du Deinen ersten Test. Ein Klick auf die zwei grünen Pfeile bei der Klasse sollte den Test starten.
Der Test schlägt dann natürlich fehl: org.opentest4j.AssertionFailedError: Unittest runs!

Die ganze Klasse einmal incl. der imports:
Java:
import org.junit.jupiter.api.Test;

import static org.junit.jupiter.api.Assertions.fail;

public class FirstTest {
    @Test
    public void testJUnit() {
        fail("Unittest runs!");
    }
}
 
Ok, es geht also erst einmal um die reine Erstellung. Ich gehe im Folgenden davon aus, dass Du ein einfaches Java Projekt in IntelliJ erzeugt hast.

1. Leg erst einmal einen neuen Ordner in deinem Projekt an. Das kann z.B. test-src sein. Da dann Rechtsclick Mark directory as -> Test Sources Root

2. Dann brauchst Du ggf. noch die Abhängigkeit zu JUnit. Dazu gehst Du im Projektfenster auf dein Projekt, Rechtsclick und Open Module Settings.
2.1. Dann gehst Du auf Libraries und dann in der mittleren Spalte auf das + -> from Maven um dann im Fenster einzugeben: org.junit.jupiter:junit-jupiter:5.8.0 -> nachdem Laden fragt IntelliJ, ob diese Abhängigkeit zu dem Modul hinzufügen soll. Das muss kommen.
2.2. Wechsel nun von Libraries auf Modules - da solltest Du das Modul deines Projektes sehen. Und da musst Du die Dependencies anpassen:
Du solltest junit-jupiter dort sehen mit einem Compile. Das Compile änderst Du auf Test, denn junit brauchst Du nur für fürs Testen.

3. Erster Unit-Test in test-src erstellst Du eine neue Java Klasse (FirstTest oder wie Du diese nennen willst). Hinweis: Ich gehe hier einfach mal kurz vor, wie ich sowas machen würde - incl. der "IntelliJ Unterstützung".
3.1 In der Klasse schreibst Du eine Methode:
Java:
public void testJUnit() {
}
3.2 Vor die Methode schreibst Du dann @test und IntelliJ sollte schon beim Schreiben vorschlagen: org.junit.jupiter.api.Test so dass bei einem Abschicken mit Return Taste auch automatisch der Import kommt.
3.3 In die Methode kommt nun einfach ein fail("Unittest runs!"); Das fail ist rot und Du kannst dann ein Alt Return (oder über die "Glühbirne") mit IntelliJ ein Import hinzufügen: Import static method ..... Assertions.fail

Und schon hast Du Deinen ersten Test. Ein Klick auf die zwei grünen Pfeile bei der Klasse sollte den Test starten.
Der Test schlägt dann natürlich fehl: org.opentest4j.AssertionFailedError: Unittest runs!

Die ganze Klasse einmal incl. der imports:
Java:
import org.junit.jupiter.api.Test;

import static org.junit.jupiter.api.Assertions.fail;

public class FirstTest {
    @Test
    public void testJUnit() {
        fail("Unittest runs!");
    }
}
👏 Wow, sehr präzise und maximal detailliert! Vielen lieben Dank. Es hat super geklappt. Einzige Sache was ich nicht verstehe, warum so kompliziert von IntelliJ gedacht, wenn es bei Eclipse mit einem Klick geht. 😕
 
Ist immer die Frage, wie man ein Projekt erstellt. Das wird in IntelliJ auch ähnlich einfach gehen. Gibt ja so viele Wege, ein Projekt zu erstellen.

Unter dem Strich wäre mein Tipp eh, sich nicht auf ein Projekt einer IDE zu verlassen sondern ein Tool wie Maven oder Gradle zu nutzen. Aber das ist ein Schritt, den man in Ruhe angehen kann, wenn man nicht eh schon von zu vielen Dingen total überladen ist.
 
Die Klassen im Projekt sind ja auch keine Unit Tests. Du erstellst ja für die Klassen erst einmal Unit Tests und diese kannst Du dann ausführen.
 
Da wo du das Run 'All Tests' gefunden hast sollte auch das Debug 'All Tests' sein sowie "More Run/Debug ->". Und in dem Untermenü findest Du dann das Run 'All Tests' with Coverage.

Oder Wenn Du das über die Symbolleiste machst, dann solltest Du da haben:
- Die Run Configuration (Drop Down)
- Grüner Pfeil als Run
- Grüner Käfer als Debug
- Schild mit grünem Pfeil: Run with Coverage

Edit: Tippfehler beseitigt.
 
Da wo du das Run 'All Tests' gefunden hast sollte auch das Debug 'All Tests' sein sowie "More Rund/Debug ->". Und in dem Untermenü findest Du dann das Run 'All Tests' with Coverage.

Oder Wenn Du das über die Symbolleiste machst, dann solltest Du da haben:
- Die Run Configuration (Drop Down)
- Grüner Pfeil als Run
- Grüner Käfer als Debug
- Schild mit grünem Pfeil: Run with Coverage
Ach genau! Vielen Dank!
 

Zurück
Oben