هل هناك طريقة لفصل المدى الطويل (على سبيل المثال؟اختبارات الإجهاد) بحيث لا يتم تشغيلها افتراضيًا في Maven 2؟

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

سؤال

لدينا حاجة مستمرة هنا ولا أستطيع معرفة كيفية معالجتها باستخدام أدوات ووثائق مخزون Maven 2.

بعض المطورين لدينا لديهم بعض اختبارات JUnit طويلة جدًا (عادةً اختبارات التحمل) والتي لا ينبغي تشغيلها تحت أي ظرف من الظروف كجزء منتظم من عملية الإنشاء/الإنشاء الليلي.

بالطبع يمكننا استخدام آلية استبعاد المكون الإضافي المؤكد وإخراجها من البناء، ولكن من الناحية المثالية نفضل شيئًا يسمح للمطور بتشغيلها حسب الرغبة من خلال Maven 2.

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

المحلول

وعادة سوف تضيف الملف الى تكوين مخضرم الخاص الذي يدير مجموعة مختلفة من الاختبارات:

وتشغيل هذا مع mvn -Pintegrationtest تثبيت

    <profile>
        <id>integrationtest</id>
        <build>
            <plugins>
                <plugin>
                    <groupId>org.apache.maven.plugins</groupId>
                    <artifactId>maven-surefire-plugin</artifactId>
                    <configuration>
                        <argLine>-client -Xmx896m -XX:MaxPermSize=192m</argLine>
                        <forkMode>once</forkMode>
                        <includes>
                            <include>**/**/*Test.java</include>
                            <include>**/**/*IntTest.java</include>
                        </includes>
                        <excludes>
                            <exclude>**/**/*SeleniumTest.java</exclude>
                        </excludes>
                    </configuration>
                </plugin>
            </plugins>
        </build>
        <activation>
            <property>
                <name>integrationtest</name>
            </property>
        </activation>
    </profile>

نصائح أخرى

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

<profile>
    <id>normal</id>
    <build>
        <plugins>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-surefire-plugin</artifactId>
                <configuration>
                    <excludes>
                        <exclude>**/**/*IntTest.java</exclude>
                    </excludes>
                </configuration>
            </plugin>
        </plugins>
    </build>
    <activation>
        <activeByDefault>true</activeByDefault>
    </activation>
</profile>

سوف تحتاج إلى إنشاء ملف تعريف مثل هذا، ما عليك سوى إدراج المكوّن الإضافي Surefire خارج الملف الشخصي وسيتجاوز الملف الشخصي في حالة تحديده باستخدام:

mvn -P integrationtest clean install

استخدم البرنامج المساعد اختبار التكامل مثل سوبر مفيدة التكامل اختبار ثينغي لل اختبارات التكامل منفصلة (منذ فترة طويلة، النظامية) من وحدة اختبار (الأصوليون يقولون 30 ثانية كحد أقصى لكل وحدة الاختبارات الحقيقية لتشغيل). جعل اثنين من الحزم جافا للاختبارات وحدتك مقابل اختبارات التكامل.

وبعد ذلك لا ربط هذا البرنامج المساعد لمرحلة (مخضرم دورة الحياة العادية) وتشغيله فقط عندما يتم استدعاؤه بشكل صريح كهدف، كما يلي: mvn shitty:clean shitty:install shitty:test

<plugins>
  <plugin>
    <groupId>org.codehaus.mojo</groupId>
    <artifactId>shitty-maven-plugin</artifactId>
  </plugin>
</plugins>

وبهذه الطريقة، لن تتأثر مطوري العادي الخاص بك، وعليك أن تكون قادرا على إجراء اختبارات التكامل على الطلب.

وثمة خيار آخر هو أن يكون اختبار التحمل الكشف عن ذلك قيد التشغيل في مخضرم وتشغيل مرة واحدة فقط أو مرتين. أي يتحول الى اختبار وظيفي منتظم. وبهذه الطريقة يمكنك التحقق من رمز لا تزال جيدة، ولكن لا تعمل لفترة طويلة.

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