Java
Test katmanı
JUnit ve Mockito ile test yazarısn.
LedgerService ve test
Bu derste LedgerService sınıfını ve onun birim testini yazacaksın. Service, kayıt eklemeyi ve saymayı sagliyan ince bir katmandır.
class LedgerService {
ArrayList<Transaction> ledger = new ArrayList<>();
void add(Transaction t) { ledger.add(t); }
int getCount() { return ledger.size(); }
}
Test sınıfı LedgerServiceTest, bir kayıt ekleyip getCount() değerini assertEquals(1, ...) ile doğrular. Bu, uygulamaya güvenilir bir test katmanı ekler.
assertEquals ile doğrulama
assertEquals(expected, actual) beklenen ve gerçek değeri karşılaştırır. Eşitse test geçer; değilse istisna fırlatır ve test başarısız olur. Bu, birim testlerin temel doğrulama aracıdır.
@Test
void testGetCount() {
LedgerService s = new LedgerService();
s.add(new Transaction("market", 120));
assertEquals(1, s.getCount());
}
Burada bir kayıt ekledikten sonra getCount() 1 döndürmeli. Ilk argüman beklenen, ikincisi gerçek değerdir. Testlerin main yerine ayrı sınıfta olması, üretim kodunu temiz tutar.
Uygulama LedgerServiceTest yaz
LedgerServiceTest sınıfı tanımla. @Test ile işaretli testGetCount yöntemi yaz; bir kayıt ekle ve assertEquals(1, s.getCount()) çağır. Main sınıfında bir LedgerService oluştur, iki kayıt ekle ve service.getCount() sonucunu System.out.println ile yazdır.
Örnek çözümü göster
import java.util.ArrayList;
import java.util.concurrent.*;
import org.junit.jupiter.api.Test;
import static org.junit.jupiter.api.Assertions.*;
class Transaction {
String category;
int amount;
Transaction(String category, int amount) {
this.category = category;
this.amount = amount;
}
}
class LedgerService {
ArrayList<Transaction> ledger = new ArrayList<>();
void add(Transaction t) { ledger.add(t); }
int getCount() { return ledger.size(); }
}
class LedgerServiceTest {
@Test
void testGetCount() {
LedgerService s = new LedgerService();
s.add(new Transaction("market", 120));
assertEquals(1, s.getCount());
}
}
public class Main {
public static void main(String[] args) throws Exception {
LedgerService service = new LedgerService();
service.add(new Transaction("market", 120));
service.add(new Transaction("fuel", 80));
System.out.println(service.getCount());
}
}
Kendini test et
-
@Test annotation'ini tamamla
import org.junit.jupiter.api.Test;
import static org.junit.jupiter.api.Assertions.*;
class LedgerServiceTest {
____
void testGetCount() {
LedgerService s = new LedgerService();
s.add(new Transaction("market", 120));
assertEquals(1, s.getCount());
}
}
Cevabı göster
import org.junit.jupiter.api.Test;
import static org.junit.jupiter.api.Assertions.*;
class LedgerServiceTest {
@Test
void testGetCount() {
LedgerService s = new LedgerService();
s.add(new Transaction("market", 120));
assertEquals(1, s.getCount());
}
}
-
assertEquals(1, s.getCount()) ne zaman başarısız olur?
- @Test yoksa
- Sınıf derlendiginde
- main yoksa
- getCount() 1 dondurdugunde değilse
Cevabı göster
getCount() 1 dondurdugunde değilse — getCount() 1 dışında bir değer döndürürse assertion başarısız olur.
-
Test kavramlarını eşleştir
- LedgerService
- Ekler ve sayar
- LedgerServiceTest
- Test sınıfı
- @Test
- Test yöntemi işareti
- assertEquals
- Değer doğrulama
Sıradaki ders: Birleştirme