💻
Orta
Mini Test Framework: TestRunner
100 puan
·
Java
Bu ödevde Java Reflection API kullanarak basit bir test framework simülasyonu oluşturacaksınız. TestRunner sınıfı, belirtilen test sınıfındaki @SimpleTest ile işaretlenmiş metotları bulur, çalıştırır ve sonuçları raporlar.
📋 Talimatlar
Bir mini test framework oluşturun.
@SimpleTest anotasyonu:
@Retention(RetentionPolicy.RUNTIME)ve@Target(ElementType.METHOD)ile tanımlı- Parametre almaz
Assert sınıfı:
static void assertEquals(Object expected, Object actual)→ eşit değilseAssertionErrorfırlatır (mesaj:Expected <expected> but got <actual>)static void assertTrue(boolean condition)→ false iseAssertionErrorfırlatır (mesaj:Expected true but got false)
TestRunner sınıfı:
static void run(Class<?> testClass)metodu- testClass'taki tüm
@SimpleTestanotasyonlu metotları bulur - Her metot için yeni instance oluşturur (no-arg constructor)
- Metotları isimlerine göre alfabetik sırala ve çalıştırır
- Başarılı:
PASS: methodNameyazdırır - Başarısız (AssertionError):
FAIL: methodName - hata mesajıyazdırır - Sonunda:
Results: X/Y passedyazdırır
Main sınıfı:
Stdin'den test sınıfı adını okur ve TestRunner.run(Class.forName(name)) çağırır.
Örnek test sınıfı (CalculatorTest) program içinde tanımlı olmalı:
testAddition: assertEquals(4, 2+2)testSubtraction: assertEquals(1, 5-4)testDivisionByZero: assertTrue(false) ile bilerek başarısız
🧪 Örnek Test Senaryoları
CalculatorTest — 2 pass, 1 fail (alfabetik sıra)
Girdi
CalculatorTest
Beklenen Çıktı
PASS: testAddition FAIL: testDivisionByZero - Expected true but got false PASS: testSubtraction Results: 2/3 passed
💡 İpuçları
İpucu 1: Method.isAnnotationPresent(SimpleTest.class) ile anotasyonlu metotları bulabilirsiniz.
İpucu 2: Method.invoke() InvocationTargetException fırlatır — getCause() ile gerçek exception'a ulaşın.
İpucu 3: testClass.getDeclaredConstructor().newInstance() ile yeni instance oluşturun.
İpucu 4: Arrays.stream(methods).sorted(Comparator.comparing(Method::getName)) ile alfabetik sıralayın.
☕
Main.java
✓ Çözüm yüklendi
puan
Testleri çalıştırmak için kodunuzu gönderin
✅ Tüm testler geçti! Tebrikler!
Beklenen:
Sonuç:
Ln 1, Col 1
·
JAVA
·
UTF-8
Wandbox