Java
Özet - JUnit test
@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.
Örnek çözümü göster
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));
}
}
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.
Örnek çözümü göster
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);
}
}
Kendini test et
-
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
Cevabı göster
Assertion istisna fırlattığında — Assertion başarısız olursa istisna fırlatır ve test başarısız sayılır.
-
JUnit 5 özetini eşleştir
- @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
Sıradaki ders: Mock