আমি কীভাবে আমার মাভেন ইন্টিগ্রেশন পরীক্ষা চালাতে পারি


170

আমার একটি ম্যাভেন 2 মাল্টি-মডিউল প্রকল্প রয়েছে এবং আমার প্রতিটি সন্তানের মডিউলগুলিতে আমার নামযুক্ত যুনিট পরীক্ষা রয়েছে Test.javaএবং Integration.javaইউনিট টেস্ট এবং ইন্টিগ্রেশন পরীক্ষার জন্য যথাক্রমে। যখন আমি কার্যকর করি:

mvn test

*Test.javaশিশু মডিউলগুলির মধ্যে সমস্ত JUnit পরীক্ষা চালানো হয়। আমি যখন মৃত্যুদন্ড কার্যকর করি

mvn test -Dtest=**/*Integration

কেউই Integration.javaপরীক্ষায় শিশু মডিউল মধ্যে চালানো পেতে।

এগুলি আমার কাছে ঠিক একই কমান্ডের মতো বলে মনে হচ্ছে তবে -ডিস্ট = / * ইন্টিগ্রেশন ** এর সাথে এটি কাজ করে না যা প্যারেন্ট স্তরে 0 টি পরীক্ষা চালায় যা কোনও পরীক্ষা নেই


4
খিফের উত্তরটি অবশ্যই গ্রহণযোগ্য হওয়া উচিত, কারণ এটি মাভেনের সংহত পরীক্ষাগুলি সংজ্ঞায়নের বর্তমান মানদণ্ড standard
হেনিনি

উত্তর:


110

পৃথকভাবে ইউনিট পরীক্ষা এবং ইন্টিগ্রেশন পরীক্ষা চালানোর জন্য আপনি মাভেনের শিয়ারফায়ার সেটআপ করতে পারেন। স্ট্যান্ডার্ড ইউনিট পরীক্ষার পর্যায়ে আপনি এমন সমস্ত কিছু চালান যা কোনও ইন্টিগ্রেশন পরীক্ষার সাথে মেলে না। তারপরে আপনি একটি দ্বিতীয় পরীক্ষার স্তর তৈরি করুন যা কেবলমাত্র ইন্টিগ্রেশন টেস্টগুলি চালায়।

এখানে একটি উদাহরণ:

    <plugin>
      <groupId>org.apache.maven.plugins</groupId>
      <artifactId>maven-surefire-plugin</artifactId>
      <configuration>
        <excludes>
          <exclude>**/*IntegrationTest.java</exclude>
        </excludes>
      </configuration>
      <executions>
        <execution>
          <id>integration-test</id>
          <goals>
            <goal>test</goal>
          </goals>
          <phase>integration-test</phase>
          <configuration>
            <excludes>
              <exclude>none</exclude>
            </excludes>
            <includes>
              <include>**/*IntegrationTest.java</include>
            </includes>
          </configuration>
        </execution>
      </executions>
    </plugin>

1
আমি যেমনটি বলেছিলাম তেমনটি কনফিগার করেছি এবং কেবল * টেস্ট নয় * ইন্টিগ্রেশন.জভা ফাইলগুলি সঞ্চালনের সময় চলবে: এমভিএন ইনস্টল আমার ডিফল্ট হিসাবে আমার * টেস্ট.জভা চালানো দরকার, তবে আমার নাইটল্ট বিল্ডের জন্য আমাকে উভয় * টেস্ট চালানো দরকার .জাভা এবং * ইন্টিগ্রেশন.জভা। আমাকে এমভিএন ইনস্টল করতে হবে এবং তারপরে প্রতিটি উপ-শিশু ডিরেক্টরিতে সিডি করতে হবে এবং এমভিএন -ডেস্ট = ** / * ইন্টিগ্রেশন টেস্ট চালাতে হবে
পিটার ডেলানি

66
আপনার একীকরণ পরীক্ষার জন্য ব্যর্থ-নিরাপদ প্লাগইন ব্যবহার করা উচিত, নিশ্চিত-ফায়ার প্লাগইন নয় not এটা তোলে পর্যন্ত বিল্ড খেলাফ করেন না পরে পোস্ট ইন্টিগ্রেশন ফেজ সম্পূর্ণ হলে; বিল্ডটি ব্যর্থ হওয়ার আগে আপনাকে পরীক্ষার সংস্থান (উদাহরণস্বরূপ একটি ওয়েব সার্ভার) ছিন্ন করতে দেয়। সুতরাং, ব্যর্থ-নিরাপদ।
জন গর্ডন

আমার জন্য, প্রাক-সংহতকরণ পর্বের অংশ হিসাবে, জেটি সার্ভার শুরু হয়। শেষ লগ লাইনটি হল: [INFO] জেটি সার্ভার শুরু হয়েছে। এরপরে কিছুই হয় না। আটকে যায়। ম্যাভেন নিশ্চিত ফায়ার ফেইলসেফ প্লাগইন পরীক্ষা চালায় না জেটি সার্ভার থামবে না। কোন ধারণা কি সমস্যা? আপনার দ্বারা নির্দিষ্ট হিসাবে আমি একই কনফিগারেশন ব্যবহার করছি।
তরুণ কুমার

6
এই উত্তরটি খুব পুরানো এবং আপডেট করা বা অপসারণ করা উচিত।
জ্যাক থম্পসন


250

ম্যাভেন বিল্ড জীবনচক্র এখন ইন্টিগ্রেশন পরীক্ষার, যা "টেস্ট" সময়ে চালানো ইউনিট পরীক্ষা থেকে আলাদাভাবে চালিত হয় চলমান জন্য "ইন্টিগ্রেশন পরীক্ষার" ফেজ অন্তর্ভুক্ত করা হয়েছে। এটি "প্যাকেজ" এর পরে চলে, সুতরাং আপনি যদি "এমভিএন ভেরিফাই", "এমভিএন ইনস্টল", বা "এমভিএন স্থাপনা" চালনা করেন তবে ইন্টিগ্রেশন টেস্টগুলি চালানো হবে।

ডিফল্টরূপে, ইন্টিগ্রেশন পরীক্ষার নামে পরীক্ষা শ্রেণীর রান **/IT*.java, **/*IT.javaএবং **/*ITCase.java, কিন্তু এই কনফিগার করা যাবে।

কীভাবে এটিকে তারে আটকানো যায় তার বিশদগুলির জন্য , ব্যর্থতাফের প্লাগইন , ফেলसेফ ব্যবহার পৃষ্ঠা (আমি এটি লেখার সাথে সাথে পূর্ববর্তী পৃষ্ঠা থেকে সঠিকভাবে লিঙ্ক করা হয়নি) দেখুন এবং এই সোনাইটাইপ ব্লগ পোস্টটিও দেখুন


1
@ উইলভ সঠিক কোডহাউসের কবরস্থান। এবং ম্যাভেন-ফেইলসেফ-প্লাগইন এখন অ্যাপাচে রয়েছে। দুঃখিত। :)
জিন কোওন

38
ডিফল্টরূপে mvn integration-testইউনিট পরীক্ষাও চালায় (নিশ্চিতফায়ারের মাধ্যমে ব্যবহার করে) তবে mvn failsafe:integration-testকেবল ব্যর্থ সেফ ইন্টিগ্রেশন পরীক্ষা চালায়।
শ্যাডো ম্যান

22
অবিশ্বাস্যভাবে, Failsafe প্লাগইন ডকুমেন্টেশন, ব্যবহারের পৃষ্ঠা এবং প্রায়শই জিজ্ঞাসিত প্রশ্নাবলী এটি নামে পরীক্ষা শ্রেণীর রান উল্লেখ না * / আইটি .java, ** / * IT.java, এবং ** / * ITCase.java ...
Henno Vermeulen

1
যদি এটি packageপর্যায়ের পরে চলে , তার মানে আমার সমস্ত আইটি জাভা উত্স কোডটি ডান src/main/javaপরিবর্তে রাখা উচিত src/test/java?
ব্রুস সান

5
@ হেন্নো ভার্মুলেন আমাকে কীভাবে পরীক্ষার নাম বলবেন সে সম্পর্কে আমি বিভ্রান্ত হয়ে পড়েছিলাম। এটি টেস্টের অন্তর্ভুক্তি এবং ব্যতিক্রমগুলিতে বর্ণিত হয়েছে । এটি দুর্দান্ত যে ডিফল্টগুলি ওভাররাইড করা যেতে পারে, তবে তারা যদি পূর্বনির্ধারিত খেলাগুলির উল্লেখ আগেই করত তবে ভাল লাগবে।
জোশুয়া টেলর

63

আপনি যা করতে চান তা আমি ঠিক করেছি এবং এটি দুর্দান্ত কাজ করে। ইউনিট পরীক্ষাগুলি "* টেস্টগুলি" সর্বদা চলতে থাকে এবং আপনি যখন কোনও এমভিএন যাচাই বা এমভিএন ইনস্টল করেন কেবল তখনই * * ইন্টিগ্রেশন টেস্টগুলি চালিত হয়। এখানে এটি আমার পিওএম থেকে স্নিপেট। সার্জ 10 প্রায় সঠিক ছিল .... কিন্তু বেশ না।

  <plugin>
    <!-- Separates the unit tests from the integration tests. -->
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-surefire-plugin</artifactId>
    <configuration>
       <!-- Skip the default running of this plug-in (or everything is run twice...see below) -->
       <skip>true</skip>
       <!-- Show 100% of the lines from the stack trace (doesn't work) -->
       <trimStackTrace>false</trimStackTrace>
    </configuration>
    <executions>
       <execution>
          <id>unit-tests</id>
          <phase>test</phase>
          <goals>
             <goal>test</goal>
          </goals>
          <configuration>
                <!-- Never skip running the tests when the test phase is invoked -->
                <skip>false</skip>
             <includes>
                   <!-- Include unit tests within integration-test phase. -->
                <include>**/*Tests.java</include>
             </includes>
             <excludes>
               <!-- Exclude integration tests within (unit) test phase. -->
                <exclude>**/*IntegrationTests.java</exclude>
            </excludes>
          </configuration>
       </execution>
       <execution>
          <id>integration-tests</id>
          <phase>integration-test</phase>
          <goals>
             <goal>test</goal>
          </goals>
          <configuration>
            <!-- Never skip running the tests when the integration-test phase is invoked -->
             <skip>false</skip>
             <includes>
               <!-- Include integration tests within integration-test phase. -->
               <include>**/*IntegrationTests.java</include>
             </includes>
          </configuration>
       </execution>
    </executions>
  </plugin>

শুভকামনা!


হুবহু আমি কী করার চেষ্টা করেছি তবে আমার ইন্টিগ্রেশন টেস্টগুলি এমভিএন পরীক্ষার পর্যায়ে চলতে থাকবে, কারণ আমি এই খেলাকে ছাড়িনি। আমি ভেবেছিলাম পরীক্ষা সম্পাদন কনফিগারেশন এটি ওভাররাইড করবে। যেমনটি আপনি ব্যাখ্যা করেছেন, এটি কেবলমাত্র একটি নতুন এক্সিকিউশন যুক্ত করেছে (সুতরাং সবকিছুই দু'বার চালিত হবে)। সুতরাং আমার জন্য এড়িয়ে চলা টুকরো টুকরো ছিল। +1 এই কনফিগারেশনের ফলে 100%
নীল শ্মিট

2
তারপরে এই প্রতিক্রিয়াটির জন্য উত্তরটি মনে করে বাক্সটি নির্দ্বিধায় চেক করুন!
এইচডিভ

আমার জন্য, প্রাক-সংহতকরণ পর্বের অংশ হিসাবে, জেটি সার্ভার শুরু হয়। শেষ লগ লাইনটি হল: [INFO] জেটি সার্ভার শুরু হয়েছে। এরপরে কিছুই হয় না। আটকে যায়। ম্যাভেন নিশ্চিত ফায়ার ফেইলসেফ প্লাগইন পরীক্ষা চালায় না জেটি সার্ভার থামবে না। কোন ধারণা কি সমস্যা? আপনার দ্বারা নির্দিষ্ট হিসাবে আমি একই কনফিগারেশন ব্যবহার করছি।
তরুণ কুমার

@ তারুন - আপনার ইস্যুতে নতুন প্রশ্ন জিজ্ঞাসা করুন
এইচডিএভ

2
এটি গ্রহণযোগ্য উত্তর হওয়া উচিত। সম্পর্কিত উত্কৃষ্ট গোলটি: clean compile integration-test -Dmaven.test.failure.ignore=false
নিল লিমা

31

আপনি তাদের খুব সহজেই JUnit বিভাগ এবং মাভেন ব্যবহার করে বিভক্ত করতে পারেন।
বিভক্ত ইউনিট এবং ইন্টিগ্রেশন পরীক্ষার দ্বারা এটি খুব নীচে দেখানো হয়েছে।

একটি চিহ্নিতকারী ইন্টারফেস সংজ্ঞায়িত করুন

বিভাগগুলি ব্যবহার করে একটি পরীক্ষাকে গ্রুপিংয়ের প্রথম পদক্ষেপটি একটি মার্কার ইন্টারফেস তৈরি করা।
আপনি ইন্টিগ্রেশন পরীক্ষা হিসাবে চালাতে চান এমন সমস্ত পরীক্ষার চিহ্নিত করতে এই ইন্টারফেসটি ব্যবহার করা হবে।

public interface IntegrationTest {}

আপনার পরীক্ষা ক্লাস চিহ্নিত করুন

আপনার পরীক্ষার শ্রেণির শীর্ষে বিভাগটি টীকা যুক্ত করুন। এটি আপনার নতুন ইন্টারফেসের নাম নেয়।

import org.junit.experimental.categories.Category;

@Category(IntegrationTest.class)
public class ExampleIntegrationTest{

    @Test
    public void longRunningServiceTest() throws Exception {
    }

}

ম্যাভেন ইউনিট টেস্টগুলি কনফিগার করুন

এই দ্রষ্টব্যটির সৌন্দর্যটি হ'ল কোনও বিষয়গুলির ইউনিট পরীক্ষার দিকের জন্য সত্যিই পরিবর্তন হয় না।
কোনও ইন্টিগ্রেশন টেস্ট উপেক্ষা করার জন্য আমরা কেবল মেন সিফারফায়ার প্লাগইনে কিছু কনফিগারেশন যুক্ত করি।

<plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-surefire-plugin</artifactId>
    <version>2.11</version>
    <configuration>
        <includes>
            <include>**/*.class</include>
        </includes>
        <excludedGroups>
            com.test.annotation.type.IntegrationTest
        </excludedGroups>
    </configuration>
</plugin>

আপনি যখন এটি করেন mvn clean test, কেবলমাত্র আপনার চিহ্নবিহীন ইউনিট পরীক্ষাগুলি চলবে।

মাভেন ইন্টিগ্রেশন টেস্টগুলি কনফিগার করুন

আবার এর জন্য কনফিগারেশনটি খুব সাধারণ।
আমরা স্ট্যান্ডার্ড ফেইলসেফ প্লাগইন ব্যবহার করি এবং এটি কেবলমাত্র ইন্টিগ্রেশন টেস্টগুলি চালাতে কনফিগার করে।

<plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-failsafe-plugin</artifactId>
    <version>2.19.1</version>
    <configuration>
        <includes>
            <include>**/*.class</include>
        </includes>
        <groups>
            com.test.annotation.type.IntegrationTest
        </groups>
    </configuration>
</plugin>

কনফিগারেশনটি বিল্ডের ইন্টিগ্রেশন-পরীক্ষার পর্যায়ে ব্যর্থতাফরীন প্লাগইনটি চালানোর জন্য একটি প্রমিত প্রয়োগের লক্ষ্য ব্যবহার করে।

আপনি এখন একটি করতে পারেন mvn clean install
এবার ইউনিটের পরীক্ষা চলার পাশাপাশি ইন্টিগ্রেশন-টেস্ট পর্যায়ে ইন্টিগ্রেশন টেস্টগুলি চালানো হয়।


আমি ভেবেছিলাম আমার কাছে ইউনিতের আর কোনও গোপন রহস্য নেই। ভাল জায়গা!
জার্মটাস

4
এটি কেবলমাত্র তখনই কার্যকর হয় যদি মার্কেন ইন্টারফেসটি মাভেনের কাছে ইতিমধ্যে উপলব্ধ কোথাও উপস্থিত থাকে। আপনার মার্কার ইন্টারফেস একই মাল্টি-মডিউল বিল্ডের অন্য মডিউলে উপস্থিত থাকলে এটি কাজ করে না।
ইঞ্জিনিয়ারবাটার_ডিজে

@ ইঞ্জিনিয়ারবেটার_ডিজে আপনি এর অর্থ কি? আপনি যদি একাধিক প্রকল্প ভিত্তিক মাভেন কনফিগারেশনটি করতে পারেন তবে তা করতে পারবেন না?
ম্যাথিউসব

16

আপনার ম্যাভেন ফেলসএফ প্লাগইন ব্যবহার করার চেষ্টা করা উচিত । আপনি এটি নির্দিষ্ট পরীক্ষার সেট অন্তর্ভুক্ত করতে বলতে পারেন।


1
+1 এটি আমি ব্যবহার করি। ভাল কাজ করে এবং আপনাকে প্রাক / পোস্ট সেটআপ করার অনুমতি দেয় যেমন কোনও স্থানীয় সার্লেট পাত্রে শুরু করা এবং বন্ধ করা।
এমডিএমএ


9
কবরস্থানের পৃষ্ঠায় কেবল বলা হয়েছে যে failsafeপ্লাগইনটি সরানো হয়েছে maven-failsafe-plugin। দেখে মনে হচ্ছে এটি maven-failsafe-pluginএখনও সক্রিয় রয়েছে (ডকসগুলি সর্বশেষে মার্চ 2014 এ ধাক্কা দিয়েছিল)।
জেমস কিংজবেরি

13

ডিফল্টরূপে, মাভেন কেবল টেস্ট চালায় যা ক্লাসের নামে কোথাও টেস্ট আছে।

ইন্টিগ্রেশন টেস্টের নাম পরিবর্তন করুন এবং এটি সম্ভবত কাজ করবে।

বিকল্পভাবে আপনি সেই ফাইলটি অন্তর্ভুক্ত করার জন্য ম্যাভেন কনফিগারেশন পরিবর্তন করতে পারেন তবে আপনার পরীক্ষাগুলি সামথিংস্টেস্ট হিসাবে নামকরণ করা সম্ভবত এটি সহজ এবং ভাল।

পরীক্ষার অন্তর্ভুক্তি এবং ব্যতিক্রমগুলি থেকে :

ডিফল্টরূপে, শিওরফায়ার প্লাগইনটি স্বয়ংক্রিয়ভাবে নীচের ওয়াইল্ডকার্ড নিদর্শনগুলির সাথে সমস্ত পরীক্ষার শ্রেণি অন্তর্ভুক্ত করবে:

  • \*\*/Test\*.java - এর সমস্ত উপ-ডিরেক্টরি এবং "টেস্ট" দিয়ে শুরু হওয়া সমস্ত জাভা ফাইলের নাম অন্তর্ভুক্ত করে।
  • \*\*/\*Test.java - এর সমস্ত উপ-ডিরেক্টরি এবং "টেস্ট" দিয়ে শেষ হওয়া সমস্ত জাভা ফাইলের নাম অন্তর্ভুক্ত করে।
  • \*\*/\*TestCase.java - এর সমস্ত উপ-ডিরেক্টরি এবং "টেস্টকেস" দিয়ে শেষ হওয়া সমস্ত জাভা ফাইলের নাম অন্তর্ভুক্ত করে।

যদি পরীক্ষার ক্লাসগুলি নামকরণের সম্মেলনে না যায়, তবে সুরফায়ার প্লাগইনটি কনফিগার করুন এবং আপনি যে পরীক্ষাগুলি অন্তর্ভুক্ত করতে চান তা উল্লেখ করুন।


হাই এবং ধন্যবাদ আমার দুটি ধরণের পরীক্ষা আছে সাধারণ পজো জুনিট পরীক্ষাগুলি যাকে সামথিংস্টেস্ট.জভা বলা হয় যা বরখাস্ত হয়। আমার সামিথিং ইন্টিগ্রেশন.জভা নামে একীকরণের পরীক্ষাও রয়েছে যা বরখাস্ত হয় না। সোমিংটেষ্ট.জভা এমভিএন পরীক্ষা বা এমভিএন ইনস্টলের মাধ্যমে বরখাস্ত হয়। দ্বিতীয় পরীক্ষাগুলি বরখাস্ত হয় না। এমভিএন পরীক্ষা -পরেস্ট = ** / * ইন্টিগ্রেশন
পিটার

.. এবং "মাভেন কেবলমাত্র ক্লাস নামে কোথাও টেস্ট রয়েছে এমন টেস্টগুলি চালায়" আপনার অর্থ "ম্যাভেন শিফারফায়ার প্লাগইন কেবল টেস্ট চালায় যা ক্লাসের নামের কোথাও টেস্ট আছে"।
জোশুয়া ডেভিস

1
এটি "শ্রেণীর নাম" কোথাও নয় "এর" শ্রেণীর নাম টেস্ট দিয়ে শেষ হয় "উদাহরণস্বরূপ মাই টেস্ট কাজ করে তবে মাই টেস্টগুলি তা করেনা
জুলিয়ান

10

মাভেনের সাথে ইন্টিগ্রেশন পরীক্ষা চালানোর আর একটি উপায় হ'ল প্রোফাইল বৈশিষ্ট্যটি ব্যবহার করা:

...
<build>
    <plugins>
        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-surefire-plugin</artifactId>
            <configuration>
                <includes>
                    <include>**/*Test.java</include>
                </includes>
                <excludes>
                    <exclude>**/*IntegrationTest.java</exclude>
                </excludes>
            </configuration>
        </plugin>
    </plugins>
</build>

<profiles>
    <profile>
        <id>integration-tests</id>
        <build>
            <plugins>
                <plugin>
                    <groupId>org.apache.maven.plugins</groupId>
                    <artifactId>maven-surefire-plugin</artifactId>
                    <configuration>
                        <includes>
                            <include>**/*IntegrationTest.java</include>
                        </includes>
                        <excludes>
                            <exclude>**/*StagingIntegrationTest.java</exclude>
                        </excludes>
                    </configuration>
                </plugin>
            </plugins>
        </build>
    </profile>
</profiles>
...

চলমান 'mvn পরিষ্কার ইনস্টল' ডিফল্ট বিল্ড চালানো হবে। উপরে উল্লিখিত ইন্টিগ্রেশন পরীক্ষা উপেক্ষা করা হবে। চলমান 'mvn পরিষ্কার -P ইন্টিগ্রেশন-পরীক্ষার ইনস্টল' ইন্টিগ্রেশন পরীক্ষার অন্তর্ভুক্ত করা হবে (আমি আমার উপস্থাপনকারী ইন্টিগ্রেশন পরীক্ষার এড়িয়ে যান)। তদুপরি, আমার কাছে একটি সিআই সার্ভার রয়েছে যা প্রতি রাতে আমার ইন্টিগ্রেশন পরীক্ষা চালায় এবং তার জন্য আমি 'এমভিএন টেস্ট-পি ইন্টিগ্রেশন-টেস্টস' কমান্ডটি জারি করি ।


1
আপনি কেন ইন্টিগ্রেশন-পরীক্ষার পর্বটি ব্যবহার করবেন না? এরপরে প্রোফাইলগুলি অ্যাপ্লিকেশন সার্ভারগুলির বিরুদ্ধে ইন্টিগ্রেশন-টেস্টিং ইত্যাদির মতো ব্যবহার করা যেতে পারে, যেমন আর্কিলিয়ান যেমন করে। আমি কোনও মাভেন বিশেষজ্ঞ নই, তবে আমি মনে করি বিশেষজ্ঞরা সম্ভবত এটি বলবেন এটি খুব 'ম্যাভেন-ওয়াই' নয়।
জোশুয়া ডেভিস

1
@ জোশুয়া আমার অনুমান আমি এইভাবেই করলাম কারণ আমার একীকরণ পরীক্ষাগুলি চালাতে কমপক্ষে ৫ মিনিট সময় লাগে এবং আমি দিনে অনেকবার 'এমভিএন ক্লিন ইনস্টল' ইস্যু করি কারণ আমার স্থানীয় মেভেন রেপোতে আমার নিদর্শনগুলি আপডেট করতে হবে। লোকেরা উপরে যা বলছে সে অনুসারে, 'ইনস্টল' চালানোর ফলে ইন্টিগ্রেশন-পরীক্ষার পর্বটি চালিত হবে যার ফলে আমার মূল্যবান বিকাশকারী সময় হারাবে।
জোর্জে

হুঁ ... চালিয়ে যাওয়া ইন্টিগ্রেশন-পরীক্ষা সম্পর্কে নিশ্চিত নয়। যে কোনও ক্ষেত্রে আমি প্রোফাইলের পরিবর্তে এই পর্বটি ব্যবহার করব। বিভিন্ন অ্যাপ্লিকেশন সার্ভারগুলিকে সমর্থন করা ইত্যাদির মতো প্রোফাইলগুলির জন্য প্রোফাইলগুলি আরও ভাল ব্যবহার করা যায়
জোশুয়া ডেভিস

1
আমি এগিয়ে যেতে হবে এবং তারপর সঙ্গে প্রায় খেলতে হবে। পরামর্শের জন্য ধন্যবাদ!
জর্জি

@ জর্জ আমি এখানে সঠিক লক্ষ্যটি ব্যবহার করার জন্য যাচাই করা হবে, তাই না?
কিলোকাহন

1

বিল্ডের সাথে ইউনিট পরীক্ষা চালানোর জন্য আলাদাভাবে ইন্টিগ্রেশন পরীক্ষা চালানোর জন্য আপনি মভেন ডকুমেন্টেশনগুলি অনুসরণ করতে পারেন ।

<project>
    <properties>
        <skipTests>true</skipTests>
    </properties>
    [...]
    <build>
        <plugins>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-failsafe-plugin</artifactId>
                <version>2.20.1</version>
                <configuration>
                    <skipITs>${skipTests}</skipITs>
                </configuration>
            </plugin>
        </plugins>
    </build>
    [...]
</project>

এটি আপনাকে ডিফল্টরূপে অক্ষম সমস্ত সংহত পরীক্ষার সাথে চালানোর অনুমতি দেবে। এগুলি চালাতে, আপনি এই আদেশটি ব্যবহার করুন:

mvn install -DskipTests=false

0

আপনি ব্যবহার করা উচিত ম্যাভেন surefire প্লাগইন ইউনিট পরীক্ষা চালানোর জন্য এবং ম্যাভেন failsafe প্লাগইন ইন্টিগ্রেশন পরীক্ষার চালানোর জন্য।

আপনি পতাকা ব্যবহার করে এই পরীক্ষাগুলি কার্যকর করতে টগল করতে চান তবে দয়া করে নীচে অনুসরণ করুন।

মাভেন কনফিগারেশন

        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-surefire-plugin</artifactId>
            <configuration>
                <skipTests>${skipUnitTests}</skipTests>
            </configuration>
        </plugin>

        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-failsafe-plugin</artifactId>
            <configuration>
                <includes>
                    <include>**/*IT.java</include>
                </includes>
                <skipTests>${skipIntegrationTests}</skipTests>
            </configuration>
            <executions>
                <execution>
                    <goals>
                        <goal>integration-test</goal>
                        <goal>verify</goal>
                    </goals>
                </execution>
            </executions>
        </plugin>

        <properties>
            <skipTests>false</skipTests>
            <skipUnitTests>${skipTests}</skipUnitTests>
            <skipIntegrationTests>${skipTests}</skipIntegrationTests>
        </properties>

সুতরাং, নীচের পতাকা বিধি অনুসারে পরীক্ষাগুলি বাদ দেওয়া বা স্যুইচ করা হবে:

টেস্টগুলি নীচে পতাকাগুলি দ্বারা এড়ানো যায়:

  • -DskipTests উভয় ইউনিট এবং ইন্টিগ্রেশন পরীক্ষা এড়িয়ে যায়
  • -DskipUnitTests ইউনিট পরীক্ষা এড়িয়ে যায় তবে ইন্টিগ্রেশন পরীক্ষা চালায়
  • -DskipIntegrationTests ইন্টিগ্রেশন পরীক্ষা এড়িয়ে যায় তবে ইউনিট পরীক্ষা চালায়

চলমান টেস্ট

কেবলমাত্র ইউনিট টেস্টগুলি সম্পাদন করতে নীচে চালান

mvn clean test

পরীক্ষা চালানোর জন্য আপনি নীচের আদেশটি কার্যকর করতে পারেন (উভয় ইউনিট এবং সংহতকরণ)

mvn clean verify

শুধুমাত্র ইন্টিগ্রেশন টেস্ট চালানোর জন্য অনুসরণ করুন

mvn failsafe:integration-test

অথবা ইউনিট পরীক্ষা ছেড়ে যান

mvn clean install -DskipUnitTests

এছাড়াও, চলাকালীন ইন্টিগ্রেশন পরীক্ষাগুলি এড়িয়ে চলার জন্য mvn installঅনুসরণ করুন

mvn clean install -DskipIntegrationTests

ব্যবহার করে আপনি সমস্ত পরীক্ষা এড়িয়ে যেতে পারেন

mvn clean install -DskipTests
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.