Ana içeriğe geç

Yürütme Hook'ları

ExecutionHook, test yürütme yaşam döngüsünün kilit noktalarına davranış enjekte etmenizi sağlar — suite başlangıcı/bittiği ve test başına başlangıç/bitiş/hata. Tüm metotlar opsiyoneldir (varsayılan no-op).


Bir hook oluşturun​

import io.testfly.hooks.ExecutionHook;

public class TimingHook implements ExecutionHook {

@Override
public void onSuiteStart() {
// framework bootstrap'tan sonra, herhangi bir test çalışmadan önce bir kez çağrılır
}

@Override
public void onSuiteEnd() {
// tüm raporlar üretildikten sonra bir kez çağrılır
}

@Override
public void onTestStart(String testId) {
// testId = "com.example.LoginTest#loginTest"
System.out.println("Starting: " + testId);
}

@Override
public void onTestEnd(String testId, String status) {
// status = "PASSED" veya "SKIPPED"
metricsClient.record(testId, status);
}

@Override
public void onTestFailure(String testId, Throwable cause) {
// ekran görüntüsü yakalandıktan sonra, driver kapatılmadan önce çağrılır
alertService.send("FAILED: " + testId + " — " + cause.getMessage());
}
}

Yalnızca ihtiyacınız olan metotları geçersiz kılın — diğerleri varsayılan olarak no-op'tur.


Java SPI ile kaydettirin (otomatik keşif)​

src/main/resources/META-INF/services/io.testfly.hooks.ExecutionHook

İçerik:

com.example.hooks.TimingHook

Programatik olarak kaydettirin​

import io.testfly.hooks.HookRegistry;

HookRegistry.register(new TimingHook());

Bunu suite başlamadan önce çağırın (ör. bir @BeforeSuite metodu veya TestFlyPlugin.onLoad içinde).


Hook olay sırası​

onSuiteStart()
onTestStart("LoginTest#login")
onTestEnd("LoginTest#login", "PASSED")

onTestStart("CheckoutTest#checkout")
onTestFailure("CheckoutTest#checkout", AssertionError)
// not: onTestFailure tetiklendiğinde onTestEnd ÇAĞRILMAZ

onSuiteEnd()

Hata izolasyonu​

Hook hataları izole edilir — bir hook'taki bir istisna günlüğe kaydedilir ancak diğer hook'ların çalışmasını engellemez veya test sonuçlarını etkilemez.


Hook ve Eklenti (Plugin) karşılaştırması​

ExecutionHookTestFlyPlugin
Test başına olaylarEvetHayır
Suite olaylarıEvetEvet (onLoad/onUnload)
Yapılandırmaya erişimHayırEvet (onLoad aracılığıyla)
Tipik kullanımTest başına metrikler, uyarılarBaşlatma, harici istemciler