IntelliJ IDEA pierwszy projekt to w praktyce pięć decyzji w kreatorze New Project: nazwa, język Java, system budowania, JDK i współrzędne Mavena. W tej lekcji założycie projekt Maven na JDK 25, poznacie strukturę katalogów, uruchomicie pierwszą klasę i pierwszy test JUnit, a na końcu dołożycie Selenium.
To trzecia lekcja kursu Javy dla testerów. Opis dotyczy IntelliJ IDEA 2026.2.3, aktualnej wersji z 16 września 2026 roku. Projekt z tej lekcji zbudowaliśmy lokalnie Mavenem 3.9.12 na JDK Temurin 25.0.2, z JUnit 6.1.3, a wszystkie wyniki i komunikaty błędów przepisaliśmy z konsoli. Jeśli nie macie jeszcze zainstalowanej Javy, zacznijcie od poprzedniej lekcji o instalacji środowiska.
Spis treści
- Którą IntelliJ IDEA pobrać w 2026 roku?
- IntelliJ IDEA pierwszy projekt krok po kroku
- Maven, Gradle czy IntelliJ: który system budowania wybrać?
- Jak wygląda struktura katalogów projektu?
- Co jest w pliku pom.xml?
- Jak uruchomić pierwszą klasę i pierwszy test?
- Jakie błędy pojawiają się przy pierwszym projekcie?
- Jak z tego projektu zrobić projekt testów automatycznych?
- Ćwiczenie z rozwiązaniem
Którą IntelliJ IDEA pobrać w 2026 roku?
Pobierzcie po prostu IntelliJ IDEA, bez szukania wersji Community. Według bloga JetBrains z lipca 2025 roku firma przeszła na jedną, wspólną dystrybucję: jest jeden instalator zamiast osobnych pobrań Community Edition i Ultimate. Bez subskrypcji IDE pozostaje w pełni funkcjonalne i darmowe, także w projektach komercyjnych, a funkcje Ultimate odblokowuje płatna subskrypcja. Zmiana weszła w wersji 2025.3 z grudnia 2025 roku. Według danych o wydaniach JetBrains ostatnia osobna wersja Community to właśnie 2025.3, a aktualne wydanie IntelliJ IDEA to 2026.2.3 z 16 września 2026.
Według tej samej dokumentacji JetBrains z 2026 roku IntelliJ IDEA działa na Windows 10 i 11, macOS 15 i 26 oraz na Linuxie, między innymi na Ubuntu 24.04 i 26.04 LTS.
Do tego kursu wystarczy darmowa część: edytor Javy, Maven, Gradle, JUnit, debugger i integracja z Git są w niej dostępne. Sprawdźcie jeszcze sprzęt, bo IDE do lekkich nie należy:
Wymagania IntelliJ IDEA według JetBrains
8 GB
RAM łącznie, z czego 3 GB wolne dla procesów IDE
4 rdzenie
procesor x86_64 albo arm64
10 GB
wolnego miejsca na dysku
1280 × 720
minimalna rozdzielczość ekranu
Źródło: JetBrains, IntelliJ IDEA Documentation, Install IntelliJ IDEA, System requirements, 2026.
IntelliJ IDEA pierwszy projekt krok po kroku
Uruchomcie IntelliJ IDEA. Na ekranie powitalnym kliknijcie New Project, a jeśli jakiś projekt jest już otwarty, wybierzcie z menu File | New | Project. Kreator wygląda tak samo na Windows, macOS i Linuxie. Oto jak przejść przez lekcję IntelliJ IDEA pierwszy projekt pole po polu:
- Na liście po lewej zostawcie Java.
- W polu Name wpiszcie
pierwszy-projekt, w Location wybierzcie katalog na projekty kursu, na przykład~/kurs-java. - Opcję Create Git repository możecie zaznaczyć od razu. Plik
.gitignoreIDE i tak wygeneruje. - W Build system wybierzcie Maven.
- Z listy JDK wybierzcie JDK 25 zainstalowane w poprzedniej lekcji. Jeśli go nie ma na liście, użyjcie Add JDK from Disk i wskażcie katalog z
JAVA_HOME. Opcja Download JDK też działa, ale wtedy IDE ma inną Javę niż terminal. - Zaznaczcie Add sample code, żeby dostać gotową klasę z metodą
main. - Rozwińcie Advanced Settings i wpiszcie GroupId
pl.qualityisland(u Was odwrócona domena Waszej firmy) oraz ArtifactIdpierwszy-projekt. - Kliknijcie Create i poczekajcie, aż pasek postępu na dole okna zniknie. Maven pobiera wtedy pliki z internetu.
Pierwsze otwarcie projektu Maven bywa powolne i to normalne: IDE indeksuje JDK i ściąga zależności. Kawa zrobiona w tym czasie to nie lenistwo, tylko świadome zarządzanie zasobami. Kolejne otwarcia trwają już kilka sekund.
Maven, Gradle czy IntelliJ: który system budowania wybrać?
Najważniejsza decyzja w lekcji IntelliJ IDEA pierwszy projekt to system budowania. Kreator proponuje trzy systemy budowania. Wybór wpływa na to, gdzie zapiszecie zależności, takie jak JUnit czy Selenium, i jak uruchomicie testy poza IDE, na przykład na serwerze CI.
W kursie używamy Mavena. Projekt testów, którego nie da się uruchomić jednym poleceniem w terminalu, nie zadziała też w pipeline CI, a tam testy automatyczne spędzają większość życia. Gradle jest równie dobry, ale jeśli zaczynacie, jeden format konfiguracji wystarczy.
Jak wygląda struktura katalogów projektu?
Maven narzuca stały układ katalogów. Według przewodnika Apache Maven o standardowym układzie katalogów kod aplikacji leży w src/main/java, a kod testów w src/test/java. Dzięki tej konwencji każdy, kto zna Mavena, od razu odnajdzie się w Waszym projekcie. Tak wygląda IntelliJ IDEA pierwszy projekt na dysku po utworzeniu i dodaniu testu:
pierwszy-projekt/
├── pom.xml
├── .idea/
├── src/
│ ├── main/
│ │ └── java/
│ │ └── pl/qualityisland/
│ │ └── Main.java
│ └── test/
│ └── java/
│ └── pl/qualityisland/
│ └── MainTest.java
└── target/
Katalogi pl/qualityisland to pakiet, czyli przestrzeń nazw klas. Każda klasa w tym katalogu zaczyna się od linii package pl.qualityisland;. IntelliJ oznacza src/main/java niebieską ikoną folderu źródeł, a src/test/java zieloną ikoną folderu testów. Plik .java poza tymi folderami nie zostanie skompilowany.
Co jest w pliku pom.xml?
Kreator tworzy minimalny pom.xml. Poniżej wersja, którą zbudowaliśmy na potrzeby lekcji: z wersją Javy ustawioną przez maven.compiler.release, zależnością JUnit 6.1.3 i wtyczką Surefire 3.6.0, która uruchamia testy. Według Maven Central z października 2026 roku to najnowsze stabilne wersje obu bibliotek.
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>pl.qualityisland</groupId>
<artifactId>pierwszy-projekt</artifactId>
<version>1.0-SNAPSHOT</version>
<properties>
<maven.compiler.release>25</maven.compiler.release>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
</properties>
<dependencies>
<dependency>
<groupId>org.junit.jupiter</groupId>
<artifactId>junit-jupiter</artifactId>
<version>6.1.3</version>
<scope>test</scope>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-plugin</artifactId>
<version>3.6.0</version>
</plugin>
</plugins>
</build>
</project>
Trzy rzeczy warto zrozumieć od razu. Właściwość maven.compiler.release mówi kompilatorowi, dla której wersji Javy ma generować kod, więc musi być równa albo niższa od JDK, na którym budujecie. Zakres test przy JUnit oznacza, że biblioteka jest widoczna tylko w src/test/java. Po każdej zmianie w pom.xml kliknijcie ikonę Load Maven Changes, która pojawia się w prawym górnym rogu edytora, żeby IDE pobrało nowe zależności.
Jak uruchomić pierwszą klasę i pierwszy test?
Otwórzcie klasę Main. Zmieńcie jej treść na poniższą: metoda main wypisuje powitanie, a osobna metoda powitanie zwraca tekst, który za chwilę przetestujecie.
package pl.qualityisland;
public class Main {
public static void main(String[] args) {
System.out.println(powitanie("testerze"));
}
static String powitanie(String kto) {
return "Witaj, " + kto + "! Projekt działa.";
}
}
Kliknijcie zieloną strzałkę obok linii z main i wybierzcie Run ‘Main.main()’. IntelliJ skompiluje kod i otworzy okno Run z wynikiem:
Witaj, testerze! Projekt działa.
Process finished with exit code 0
Teraz pierwszy test. Kliknijcie prawym przyciskiem katalog src/test/java, wybierzcie New | Package, wpiszcie pl.qualityisland, a w nim utwórzcie klasę MainTest:
package pl.qualityisland;
import static org.junit.jupiter.api.Assertions.assertEquals;
import org.junit.jupiter.api.Test;
class MainTest {
@Test
void powitanieZawieraImie() {
assertEquals("Witaj, Ania! Projekt działa.", Main.powitanie("Ania"));
}
}
Zielona strzałka przy nazwie klasy uruchomi test w IDE. Ten sam test w terminalu, z katalogu projektu, uruchamia polecenie mvn test. Wynik z naszego przebiegu:
[INFO] Tests run: 1, Failures: 0, Errors: 0, Skipped: 0
[INFO] BUILD SUCCESS
Zobaczcie też, jak wygląda porażka, bo to ją będziecie czytać najczęściej. Usunęliśmy z oczekiwanego tekstu wykrzyknik i uruchomiliśmy test jeszcze raz. Komunikat pokazuje obie wartości obok siebie, oczekiwaną i faktyczną, oraz numer linii w teście.
org.opentest4j.AssertionFailedError: expected: <Witaj, Ania Projekt działa.> but was: <Witaj, Ania! Projekt działa.>
[ERROR] MainTest.powitanieZawieraImie:11 expected: <Witaj, Ania Projekt działa.> but was: <Witaj, Ania! Projekt działa.>
Jakie błędy pojawiają się przy pierwszym projekcie?
Trzy pierwsze odtworzyliśmy celowo na naszym projekcie, dwa ostatnie to komunikaty i ostrzeżenia samego IDE.
Pierwszy z tych błędów w całości, wywołany uruchomieniem mvn compile z JAVA_HOME ustawionym na Temurin 21:
[ERROR] Failed to execute goal org.apache.maven.plugins:maven-compiler-plugin:3.13.0:compile (default-compile) on project pierwszy-projekt: Fatal error compiling: error: release version 25 not supported -> [Help 1]
Wbrew pozorom
Drugi błąd z tabeli wygląda jak brak biblioteki, a biblioteka jest. JUnit leży w pom.xml, Maven go pobrał, test w src/test/java się kompiluje. Problemem jest tylko miejsce: zakres test sprawia, że kod z src/main/java w ogóle tej biblioteki nie widzi. To zamierzone, bo kod produkcyjny nie powinien zależeć od narzędzi testowych. Kiedy zobaczycie package ... does not exist przy bibliotece, którą na pewno dodaliście, najpierw sprawdźcie, w którym katalogu leży klasa.
Jak z tego projektu zrobić projekt testów automatycznych?
Dokładając jedną zależność. Selenium WebDriver w Javie to zwykła biblioteka z Maven Central, więc dopisujecie ją w sekcji dependencies obok JUnit i klikacie Load Maven Changes. Według Maven Central aktualna wersja to 4.51.0 z 9 października 2026 roku:
<dependency>
<groupId>org.seleniumhq.selenium</groupId>
<artifactId>selenium-java</artifactId>
<version>4.51.0</version>
<scope>test</scope>
</dependency>
Pierwszy test przeglądarkowy mieści się w kilkunastu liniach. Według dokumentacji Selenium narzędzie Selenium Manager jest dołączone do każdego wydania i samo dobiera sterownik przeglądarki, więc nie pobieracie niczego ręcznie. Ten kod skompilowaliśmy poleceniem mvn test-compile na JDK 25:
package pl.qualityisland;
import static org.junit.jupiter.api.Assertions.assertTrue;
import org.junit.jupiter.api.Test;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.chrome.ChromeDriver;
class StronaGlownaTest {
@Test
void tytulStronyZawieraNazweFirmy() {
WebDriver driver = new ChromeDriver(); // Selenium Manager sam dobierze sterownik
try {
driver.get("https://qualityisland.pl/");
assertTrue(driver.getTitle().contains("Quality Island"));
} finally {
driver.quit();
}
}
}
To ten sam schemat co w MainTest: adnotacja @Test, akcja i asercja. Różni się tylko to, co testujecie. Struktura z tej lekcji, czyli Maven, katalogi main i test, JUnit i jedna zależność, to szkielet, na którym stoją także duże projekty automatyzacji. W Quality Island napisaliśmy już ponad 450 000 testów automatycznych i ten układ katalogów powtarza się w projektach każdej skali, od jednego testu po tysiące. Jeśli chcecie, żeby ktoś ułożył automatyzację w Waszym zespole od strony architektury i CI, zajrzyjcie do usługi automatyzacji testów. Jeśli wolicie nauczyć się tego sami, zacznijcie od szkolenia automatyzacja testów Selenium WebDriver albo automatyzacja testów z Playwright w Javie.
Skróty, które od razu przyspieszą Wam pracę w IntelliJ IDEA
Shift dwa razy
Search Everywhere: szukanie klas, plików, akcji i ustawień w jednym oknie
Alt+Enter
na Windows i Linuxie; podpowiedź naprawy przy podkreślonym kodzie, na przykład brakujący import
Ctrl+Spacja
uzupełnianie kodu, gdy podpowiedź nie pojawiła się sama
Alt+1
okno Project ze strukturą katalogów; na macOS Cmd+1
Ćwiczenie z rozwiązaniem
Zadanie: w projekcie pierwszy-projekt napiszcie klasę Walidator z metodą czyPoprawnyEmail(String). Adres jest poprawny, gdy ma znak @ nie na początku, a po nim kropkę, przed którą jest co najmniej jeden znak, i nie kończy się kropką. Napiszcie dwa testy: jeden dla poprawnego adresu, drugi dla pięciu niepoprawnych, w tym pustego tekstu i null. Uruchomcie wszystkie testy poleceniem mvn test.
Ćwiczenie zamyka lekcję IntelliJ IDEA pierwszy projekt: łączy klasę w src/main/java, test w src/test/java i uruchomienie w terminalu. Rozwiązanie. Klasa w src/main/java/pl/qualityisland:
package pl.qualityisland;
public class Walidator {
static boolean czyPoprawnyEmail(String email) {
if (email == null || email.isBlank()) {
return false;
}
int malpa = email.indexOf('@');
return malpa > 0 && email.indexOf('.', malpa) > malpa + 1 && !email.endsWith(".");
}
}
Testy w src/test/java/pl/qualityisland:
package pl.qualityisland;
import static org.junit.jupiter.api.Assertions.assertFalse;
import static org.junit.jupiter.api.Assertions.assertTrue;
import org.junit.jupiter.api.Test;
class WalidatorTest {
@Test
void akceptujePoprawnyAdres() {
assertTrue(Walidator.czyPoprawnyEmail("tester@qualityisland.pl"));
}
@Test
void odrzucaAdresyBezMalpyIDomeny() {
assertFalse(Walidator.czyPoprawnyEmail("tester.qualityisland.pl"));
assertFalse(Walidator.czyPoprawnyEmail("tester@pl"));
assertFalse(Walidator.czyPoprawnyEmail("tester@domena."));
assertFalse(Walidator.czyPoprawnyEmail(""));
assertFalse(Walidator.czyPoprawnyEmail(null));
}
}
[INFO] Tests run: 2, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.020 s -- in pl.qualityisland.WalidatorTest
[INFO] Tests run: 1, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.002 s -- in pl.qualityisland.MainTest
[INFO] Tests run: 3, Failures: 0, Errors: 0, Skipped: 0
[INFO] BUILD SUCCESS
Zauważcie, że warunek email == null stoi na początku. Gdyby był na końcu, wywołanie email.isBlank() na null rzuciłoby wyjątek, zanim test zdążyłby cokolwiek sprawdzić. Dlaczego kolejność ma znaczenie, wyjaśnia lekcja o operatorach logicznych i krótkim spięciu. Tego walidatora nie używajcie w produkcji: to ćwiczenie z testów, a nie pełna zgodność ze specyfikacją adresów e-mail. Dopiszcie do niego własne przypadki brzegowe, na przykład dwie małpy albo spację w środku, i sprawdźcie, które przechodzą. To najlepszy możliwy odruch testera. W Quality Island przeszkoliliśmy już ponad 2 500 specjalistów i właśnie ten odruch, szukanie przypadku, którego autor kodu nie przewidział, odróżnia testera od osoby, która tylko uruchamia testy.
Jeśli chcecie zobaczyć, jak takie projekty wyglądają w dużych zespołach, ludzie, którzy je budują, występują co roku na Testing Ground Conference, konferencji o jakości oprogramowania, którą organizuje Quality Island.
Co zabrać z tego artykułu
01IntelliJ IDEA pierwszy projekt zaczyna się od pobrania jednej dystrybucji: od wersji 2025.3 jest jedna IntelliJ IDEA; darmowa część wystarcza do kursu i działa także w projektach komercyjnych.
02W kreatorze wybierzcie Maven i to samo JDK 25, które ustawiliście w JAVA_HOME.
03Kod w src/main/java, testy w src/test/java; target/ nie trafia do Git.
04maven.compiler.release nie może być wyższe niż JDK, na którym budujecie.
05Selenium dodajecie jak każdą zależność: wpis w pom.xml i Load Maven Changes.
Źródło: JetBrains, Apache Maven, Maven Central i Selenium, stan na 10.10.2026; projekt zbudowany na Temurin 25.0.2 z Maven 3.9.12.
Na szkoleniu Java dla testerów zakładacie projekt, piszecie klasy i testy JUnit z trenerem, a każdy błąd z tej lekcji rozbieracie na żywo, na własnym komputerze.
Powiązane na blogu Quality Island
- Instalacja środowiska Java: JDK 25, JAVA_HOME i PATH
- Java pierwszy program: main, javac i nowa składnia Javy 25
- Java dla testerów automatyzujących: plan nauki
- Selektory w Selenium: lokalizowanie elementów
- 14. Programowanie obiektowe: klasy i obiekty
Pełna lista źródeł
- JetBrains, IntelliJ IDEA Moves to the Unified Distribution, 2025. Jeden instalator, darmowe użycie bez subskrypcji także komercyjnie, zachowanie po wygaśnięciu subskrypcji od 2025.2.
- JetBrains, IntelliJ IDEA 2025.3, 2025. Wydanie, w którym weszła wspólna dystrybucja i wsparcie Javy 25.
- JetBrains, Install IntelliJ IDEA, System requirements, 2026. 8 GB RAM, 4 rdzenie, 10 GB dysku, 1280 × 720.
- JetBrains, Create a new project, 2026. Pola kreatora: Build system, JDK, GroupId, ArtifactId, Add sample code.
- JetBrains, Create your first Java application, 2026. Uruchamianie klasy z poziomu edytora i okno Run.
- Apache Maven, Introduction to the Standard Directory Layout, 2026. Katalogi src/main/java, src/test/java i target.
- Maven Central, org.junit.jupiter:junit-jupiter, 2026. Najnowsza wersja 6.1.3, odczyt 10.10.2026.
- Maven Central, org.seleniumhq.selenium:selenium-java, 2026. Wersja 4.51.0, opublikowana 09.10.2026.
- Selenium, Selenium Manager, 2026. Automatyczne zarządzanie sterownikami w każdym wydaniu Selenium.



