كيف أقوم بتعيين المسار إلى ميزات الخيار الخاصة بي باستخدام خيار Junit؟

StackOverflow https://stackoverflow.com//questions/9663117

سؤال

أحاول إنشاء أول مواصفات قابلة للتنفيذ باستخدام Java وMaven.لقد أنشأت مشروعًا بسيطًا بهذا الهيكل:

specification
|-src
  |-test
    |-java
      |-mypackage
        |-MyFeatureTest.java
    |-resources
      |-MyFeature.feature

في اختبار جونيت MyFeatureTest.java لدي هذا:

import org.junit.runner.RunWith;
import cucumber.junit.Cucumber;

@RunWith(Cucumber.class)
public class HomepageTest {
}

الآن https://github.com/cucumber/cucumber-jvm/wiki/IDE-support يقول أنه يجب علي إضافة السطر التالي:

@Cucumber.Options(paths={"my/super.feature:34"})

حاولت تعديل ذلك ل

@Cucumber.Options(paths={"src/test/resources/"})

ولكن الشرح @Cucumber.Options غير متوفر على الإطلاق.لي pom.xml لديه هذه التبعيات:

<dependency>
  <groupId>junit</groupId>
  <artifactId>junit</artifactId>
  <version>4.10</version>
  <scope>test</scope>
</dependency>
<dependency>
  <groupId>info.cukes</groupId>
  <artifactId>cucumber-java</artifactId>
  <version>1.0.0.RC20</version>
  <scope>test</scope>
</dependency>
<dependency>
  <groupId>info.cukes</groupId>
  <artifactId>cucumber-junit</artifactId>
  <version>1.0.0.RC20</version>
  <scope>test</scope>
</dependency>

هل فاتني شيء؟

تحديث كان ينقصني شيء:يجب أن يكون ملف ميزة الخيار موجودًا في دليل فرعي src/test/resources/mypackage/.وإلا فلن يتم التقاطه بواسطة اختبار junit.

يمكنني إجراء اختبارات الميزات الخاصة بي عندما أضعها في نفس الدليل src/main/test/, ، لذلك فهو ليس مانعًا بالنسبة لي.لكني أود أن أفهم الإعداد بأكمله.

هل كانت مفيدة؟

المحلول

إلقاء نظرة على سؤالي هنا :

يمكنك تحديد موقع على ClassPath من خلال تعيين سمة الميزة في عبوات الخيارات مثل giveacodicetagpre.

تحرير:

في التعليمات البرمجية الجديدة giveacodicetagpre.

نصائح أخرى

ال classpath الخيار غير واضح في وثائق الخيار (وهو ليس موجودًا في JavaDoc أيضًا)، وانتهى بي الأمر باستنتاجه من وثائق CLI, ، والتي تم توثيق خيارات الموقع الأخرى.انظر List configuration options القسم في المستندات.ليس من الواضح أيضًا كيفية الحصول على تعريفات الميزات من وحدة أخرى في مشروع Maven متعدد الوحدات.

هذا ما دفعني إلى البدء (التشغيل من IDE وسطر الأوامر) في مشروع Maven متعدد الوحدات.

@CucumberOptions(
        features = {"classpath:product"},
        //...
)
public class RunCukesTest extends AbstractTestNGSpringContextTests {

حيث توجد ملفات الميزات الخاصة بي

main-project
    sub-module-1
        src/test/java/com/foo/
            RunCukesTest.java
        src/test/resources/product/
            feature_1.feature
            feature_2.feature
    sub-module-2
        ...

يسعدني ألا أرى src/test/resources في الطريق.لاحظ أنه لا يوجد الرائدة / في الطريق.يعد استخدام مسار الفصل أقل هشاشة، لأن مسار الفصل (بدلاً من دليل العمل الحالي) يجب أن يكون محددًا جيدًا.

يمكنك استخدام giveacodicetagpre.

للحصول على مسح جميع ملف الميزات في الحزمة

حسنًا، لا أستطيع أن أضع هذا إلا في صباح يوم الاثنين.لم يكن تخطيط الدليل الذي استخدمته صحيحًا، لقد نسيت وضع ميزات الخيار في أدلة فرعية تطابق بنية الحزمة الخاصة بي.

تأكد من إنشاء أدلة الحزمة المطلوبة أيضًا src/test/resources/!

بمجرد استخدام giveacodicetagpre.

ستحتاج إلى إضافة ما يلي إلى Pom.xml الخاص بك، وإلا لن يعمل "اختبار MVN".ويمكنك فقط تشغيل الاختبارات الخاصة بك من IDE. انظر: https://github.com/cucumber/cucumbumber-javaالعظمية / Blob / BLOB / MASTER / POM.XML giveacodicetagpre.

أو يمكنك فقط إنشاء وسيطات CucumberOptions الخاصة بك، كما هو الحال في https://cucumber.io/ مستندات / مرجع / JVM # CLI-Runner وصفها وتمريرها إلى Cucumber.api.cli.main.run ().هذا مثال صغير: giveacodicetagpre.

واستخدمها في اختبارك جونيت.لذلك ليس عليك إنشاء فئة منفصلة لكل TestClass فقط مع الوسائط الأخرى.

من خلال وضع ميزة الملف تحت src/اختبار/java حيث عداء الخطوات الملف أو من خلال وضعه تحت src/الرئيسية/java المشكلة سوف تحل.

لا ننسى أن يقول شكرا.:)

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top