Teste Unitare în Java cu JUnit 5 — @Test, assert, parametrizare
In this tutorial, you'll learn about Teste Unitare în Java cu JUnit 5. We cover key concepts, practical examples, and best practices.
JUnit 5 este framework-ul standard pentru testare unitară în Java, oferind adnotări pentru metode de test, aserțiuni pentru verificarea rezultatelor și suport pentru teste parametrizate care rulează același test cu date multiple.
The Problem
Fără teste unitare, bug-urile sunt descoperite târziu, în producție, iar refactorizarea codului devine riscantă. Acest quick-fix îți arată cum să scrii teste unitare eficiente cu JUnit 5.
The Wrong Way
// Testare manuală cu System.out — nesistematică
System.out.println(calculator.add(2, 3));
// trebuie să verifici manual output-ul
The Right Way
import org.junit.jupiter.api.Test;
import static org.junit.jupiter.api.Assertions.*;
class CalculatorTest {
@Test
void shouldAddTwoNumbers() {
Calculator calc = new Calculator();
assertEquals(5, calc.add(2, 3));
}
}
Output:
PASSED: shouldAddTwoNumbers()
Step-by-Step Fix
1. Scrie un test de bază
@Test
void shouldReturnTrueWhenConditionMet() {
assertTrue(service.isActive());
assertEquals("expected", actual);
assertNotNull(obj);
assertThrows(IllegalArgumentException.class, () -> {
service.process(null);
});
}
2. Folosește teste parametrizate
import org.junit.jupiter.params.ParameterizedTest;
import org.junit.jupiter.params.provider.CsvSource;
@ParameterizedTest
@CsvSource({
"2, 3, 5",
"0, 0, 0",
"-1, 1, 0"
})
void shouldAdd(int a, int b, int expected) {
assertEquals(expected, calculator.add(a, b));
}
3. Ciclul de viață al testelor
@BeforeAll static void setupAll() { ... } // o dată înainte de toate
@BeforeEach void setup() { ... } // înainte de fiecare test
@AfterEach void cleanup() { ... } // după fiecare test
@AfterAll static void cleanupAll() { ... } // o dată după toate
Prevention Tips
- Numește testele descriptiv —
shouldThrowWhenInputIsNullîn loc detest1 - Un test ar trebui să verifice un singur concept — dacă un test eșuează, ar trebui să știi exact de ce
- Folosește
assertThrowspentru a testa excepțiile, nu try-catch în test - Nu face teste care depind de ordinea de execuție — fiecare test trebuie să fie independent
Common Mistakes
- Teste care nu verifică nimic — fără aserțiuni, testul trece indiferent de rezultat.
- Dependența de ordinea testelor — testele JUnit 5 nu garantează o ordine anume.
- Folosirea lui
System.outîn teste — folosește un logger și aserțiuni, nu output vizual.
FAQ
Construit de dezvoltatorii Doda Browser, DodaZIP și Durga Antivirus Pro. Instrumentele DodaTech se integrează perfect cu Java pentru productivitate și securitate sporite.
Built by the developers of DodaTech
Doda Browser, DodaZIP & Durga Antivirus Pro