🐞 مشكلة: فشل إنشاء تقرير Cucumber
عند محاولة توليد تقرير باستخدام maven-cucumber-reporting، تظهر الرسالة التالية:
net.masterthought.cucumber.ValidationException: No report file was added!
📌 السبب المحتمل
هذه الرسالة تعني أن الـ plugin لم يجد أي ملف JSON صالح لتوليد التقرير منه. غالبًا ما يكون السبب:
- عدم تنفيذ اختبارات Cucumber قبل مرحلة verify
- عدم إنشاء الملف target/cucumber.json بسبب فشل أو غياب الاختبارات
- مسار غير صحيح أو مفقود في إعدادات pom.xml
✅ الحلول المقترحة
1. تنفيذ الاختبارات قبل توليد التقرير
`bash
mvn clean test
mvn verify
`
\> تأكد من أن mvn test يُنتج ملف cucumber.json في مجلد target.
2. التحقق من وجود ملف JSON
بعد تنفيذ الاختبارات، تأكد من وجود الملف:
`bash
ls target/cucumber.json
3. إعداد صحيح لـ @CucumberOptions
`java
@CucumberOptions(
features = "src/test/resources/features",
glue = {"steps"},
plugin = {"pretty", "json:target/cucumber.json"},
monochrome = true,
publish = true
)
4. إعداد صحيح لـ pom.xml
`xml
<plugin>
\<groupId\>net.masterthought\</groupId\>
\<artifactId\>maven-cucumber-reporting\</artifactId\>
\<version\>5.7.1\</version\>
\<executions\>
\<execution\>
\<id\>execution\</id\>
\<phase\>verify\</phase\>
\<goals\>
\<goal\>generate\</goal\>
\</goals\>
\<configuration\>
\<projectName\>cucumber-gbpf-graphql\</projectName\>
\<skip\>false\</skip\>
\<outputDirectory\>${project.build.directory}\</outputDirectory\>
\<inputDirectory\>${project.build.directory}\</inputDirectory\>
\<jsonFiles\>
\<param\>/\*.json\</param\>
\</jsonFiles\>
\<checkBuildResult\>false\</checkBuildResult\>
\</configuration\>
\</execution\>
\</executions\>
</plugin>
`
🧪 اختبار يدوي (اختياري)
`java
File reportOutputDirectory = new File("target");
List<String> jsonFiles = Arrays.asList("target/cucumber.json");
Configuration config = new Configuration(reportOutputDirectory, "اسم المشروع");
ReportBuilder reportBuilder = new ReportBuilder(jsonFiles, config);
reportBuilder.generateReports();
`
🧠 ملاحظات إضافية
- تأكد من أن ملفات .feature موجودة وتُنفذ فعليًا
- تحقق من أن ملفات الاختبار تحتوي على @RunWith(Cucumber.class) أو @Cucumber حسب نوع JUnit
- استخدم mvn clean test verify كأمر موحد لضمان الترتيب الصحيح
\> 💬 إذا استمرت المشكلة، راجع سجل التنفيذ (target/surefire-reports) أو فعّل debug في Maven للحصول على تفاصيل أعمق.