Özet - JUnit test
- Java kursu
- İleri seviye
- Ders 48/82
- 5 dk
@Test, assertEquals ve @ParameterizedTest'i birleştirerek bir hesap makinesi testi yazarsın.
Özet - JUnit test
Bu grupta JUnit 5'in temellerini gördün: @Test ile test yöntemi, assertEquals ve assertThrows ile doğrulama, @BeforeEach ile kurulum, @ParameterizedTest ile çoklu girdi ve @DisplayName ile okunabilir adlar.
Şimdi bunları bir mini göreve birleştireceksin: bir Calculator sınıfı için dört işlem testi yazacaksın. Önceki derslerin tümünden parçalar kullanacaksın. Bu özet, gerçek birim testlerinin nasıl yazıldığını gösterir.
Uygulama Calculator testlerini yaz
Bir Calculator sınıfı tanımla; add(int a, int b) ve divide(int a, int b) yöntemleri olsun (divide sıfıra bölmede ArithmeticException fırlatsın). CalculatorTest sınıfında @Test ile testAdd ve testDivide yöntemleri yaz; assertEquals(7, c.add(3, 4)) ve assertEquals(2, c.divide(10, 5)) çağır. Bir main metodu ekle ve add(3, 4) sonucunu yazdır.
Başlangıç kodu
import org.junit.jupiter.api.Test;
import static org.junit.jupiter.api.Assertions.*;
// Calculator sınıfını tanımla (add ve divide)
// CalculatorTest sınıfında testAdd ve testDivide yaz
// main metodu ekle ve add(3, 4) sonucunu yazdırÖrnek çözüm
import org.junit.jupiter.api.Test;
import static org.junit.jupiter.api.Assertions.*;
class Calculator {
int add(int a, int b) {
return a + b;
}
int divide(int a, int b) {
return a / b;
}
}
class CalculatorTest {
@Test
void testAdd() {
Calculator c = new Calculator();
assertEquals(7, c.add(3, 4));
}
@Test
void testDivide() {
Calculator c = new Calculator();
assertEquals(2, c.divide(10, 5));
}
public static void main(String[] args) {
Calculator c = new Calculator();
System.out.println(c.add(3, 4));
}
}Beklenen çıktı
7
Uygulama Parametreli toplama testi ekle
Yeni bir ParameterTest sınıfı tanımla. @ParameterizedTest ve @CsvSource({"2, 3, 5", "4, 4, 8"}) ile işaretli testAdd yöntemi yaz; int a, int b, int expected parametreleri alıp assertEquals(expected, a + b) çağrılsın. Bir main metodu ekle; (2,3) ve (4,4) çiftlerini döngüde topla ve beklenen değerlerle eşleşme sayısını yazdır.
Başlangıç kodu
import org.junit.jupiter.params.ParameterizedTest;
import org.junit.jupiter.params.provider.CsvSource;
import static org.junit.jupiter.api.Assertions.*;
// ParameterTest sınıfını tanımla
// parametreli test annotation'ı ve Csv kaynağı annotation'ı ile testAdd yaz
// main metodu ekle ve eşleşme sayısını yazdırÖrnek çözüm
import org.junit.jupiter.params.ParameterizedTest;
import org.junit.jupiter.params.provider.CsvSource;
import static org.junit.jupiter.api.Assertions.*;
class ParameterTest {
@ParameterizedTest
@CsvSource({"2, 3, 5", "4, 4, 8"})
void testAdd(int a, int b, int expected) {
assertEquals(expected, a + b);
}
public static void main(String[] args) {
int matches = 0;
int[][] pairs = {{2, 3, 5}, {4, 4, 8}};
for (int[] p : pairs) {
if (p[0] + p[1] == p[2]) matches++;
}
System.out.println(matches);
}
}Beklenen çıktı
2
Soru ve cevaplar
Dersin sorularını cevaplarıyla birlikte inceleyebilirsin. Kendini denemek istersen dersi interaktif olarak çöz.
1 Bir test yönteminin başarısız olduğunu nasıl anlarsın?
- Sınıf derlenmediğinde
- main metodu yoksa
- @Test yoksa
- Assertion istisna fırlattığında Doğru cevap
Açıklama: Assertion başarısız olursa istisna fırlatır ve test başarısız sayılır.
2 JUnit 5 özetini eşleştir
| Kavram | Anlamı |
|---|---|
@Test |
Yöntemi test yapar |
assertEquals |
Değer karşılaştırır |
@BeforeEach |
Her testten önce kurar |
@ParameterizedTest |
Çoklu girdi çalıştırır |