Cucumber JVM
dependencies {
testImplementation("dev.tracera:tracera-cucumber:<version>")
}
يتطلب JDK ≥ 17 وCucumber ≥ 7 (انظر محوّلات الاختبار الآلي). tracera-cucumber على Maven Central.
متغيرات البيئة ووضع التشغيل: محوّلات الاختبار الآلي.
ليس لدى Cucumber-JVM واجهة إعادة محاولة قياسية — لا يوجد مفتاح Env CUCUMBER_RETRY.
سجّل الإضافة:
cucumber.plugin=dev.tracera.TraceraCucumberPlugin
أو عبر @CucumberOptions(plugin = ["dev.tracera.TraceraCucumberPlugin"]).
ربط testCaseId و autotestName
ضع الوسوم على الـ Scenario (المفضّل):
@tracera.id:42
@tracera.name:e2e%2Flogin
Scenario: Login
Given the user opens login
الوسم الاختياري @tracera.name: مرمّز بـ URL. إذا لم يُحدَّد وسم الاسم، فإن autotestName يأخذ قيمة اسم السيناريو.
داخل خطوة أو خطاف:
import dev.tracera.Tracera
Tracera.testCase(42, "e2e/login")
Skip
استخدم تخطّي / pending القياسي في Cucumber. يُضاف سبب التخطّي إلى النتيجة كـ comment.
الخطوات
خطوات Gherkin تُقابل قسم الاختبار في النتيجة. للتداخل استخدم Tracera.step("…") { … } أو Tracera.suspendStep("…") { … } للكوروتينات أو @Tracera.Step("…") على دوال الـ glue (sync وsuspend). مع @Tracera.Step، إن كان العنوان فارغًا أو محذوفًا يصبح عنوان الخطوة اسم الدالة؛ {0} / {name} في العنوان تُملأ من وسائط الدالة. خطافات Before / After للسيناريو تُقابل الإعداد / التنظيف. خطافات الـ Feature / الـ suite لا تُبلَّغ.
import dev.tracera.Tracera
import io.cucumber.java.en.When
class CheckoutSteps {
@Tracera.Step("add {sku}")
fun addSku(sku: String) {
}
@When("the user checks out with {string}")
fun checkout(sku: String) {
addSku(sku)
Tracera.step("pay") { }
}
}
التعليقات والأخطاء والمرفقات
التعليقات والأخطاء والمرفقات: محوّلات الاختبار الآلي.
Tracera.comment("result-level note")
Tracera.error("result-level error text")
Tracera.step("open login") {
Tracera.comment("landed on login")
}
الاختبارات المُعلَّمة بمعاملات
كل صف في Examples يحصل على اسم سيناريو بعد أن يملأ Cucumber <…>. ضع @tracera.id: ثابتًا على الـ Outline أو الـ Scenario، أو استدعِ Tracera.testCase عندما يختلف المعرف لكل صف.
@tracera.id:42
Scenario Outline: Login as <login>
Given the user signs in as "<login>"
Examples:
| login |
| ok |
| sso |