Java'da Teste Giriş
Maria Milusheva
Senior Software Engineer
İki temel kavram:
Birim (unit) - Bir uygulamanın test edilebilir en küçük parçası; örn. bir yöntem
Birim testi - Uygulamanın diğer bölümlerinden yalıtılmış tek bir “birim” kodun doğruluğunu sınayan test
Notlar:
Birim testi büyük resim değil, küçük mantık parçaları ile ilgilidir
Diğer test türleri büyük resme odaklanır (ör. entegrasyon)
JUnit adını, temel kullanım alanı birim testi olduğundan alır



assertTrue() bir ifadenin doğru olduğunu kontrol eder: List<String> list = new ArrayList<>();
assertTrue(list.isEmpty()); // Hata yok
assertFalse() bunun tersini kontrol eder:List<String> list = new ArrayList<>();
list.add("A");
assertFalse(list.isEmpty()); // Hata yok
null değişkenler NullPointerException oluşturabilir!
Bir değişkenin null olup olmadığını kontrol eden iddialar: assertNull() ve assertNotNull()
Yaygın kullanım: bir yerden alınan değerin null olmadığını kontrol etmek
Map<String, Integer> catalogue = new HashMap<>();
catalogue.put("item1", 10);
// Hata yok
assertNotNull(catalogue.get("item1"));
assertNull(catalogue.get("item2"));
Bir ArrayIndexOutOfBoundsException fırlatıldığını doğrulamak istediğimizi varsayalım:
public String getIndex(String[] array, int index) {
return array[index];
}
JUnit bunu yapmak için birden çok yol sunar!
JUnit assertThrows() sağlar, ancak gelişmiş Java söz dizimi (lambda ifadeleri) kullanır
Bunun yerine assertInstanceOf() şöyle kullanılabilir:
try {
getIndex(new String[]{}, 4);
} catch (Exception e) {
// Beklenen özel durum sınıfını ve özel durum nesnesini geçin
assertInstanceOf(ArrayIndexOutOfBoundsException.class, e);
}
Tipik bir projede yüzlerce birim testi bulunur
Hafif ve anlaşılır olmalıdırlar
Bilgilendirici adlara sahip olmalıdırlar; böylece biri başarısız olursa sorunu ilk bakışta görürüz
Örneğin: methodUnderTest_expectedBehavior_conditions()
Java'da Teste Giriş