মাভেনে টেস্ট কোড ভাগ করে নেওয়া


183

আপনি মাভেনের অন্য একটি মডিউল থেকে পরীক্ষার কোডের উপর নির্ভর করতে পারেন কীভাবে?

উদাহরণস্বরূপ, আমার 2 টি মডিউল রয়েছে:

  • ভিত্তি
  • প্রধান

বেসে বেস পরীক্ষার ক্লাসটি বাড়ানোর জন্য আমি মাইনের একটি পরীক্ষার কেস চাই। এটা কি সম্ভব?

আপডেট: একটি গ্রহণযোগ্য উত্তর পেয়েছে , যার মধ্যে একটি পরীক্ষার জার তৈরি করা জড়িত।


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

উত্তর:


189

আমি শ্রেণিবদ্ধের পরিবর্তে টাইপ ব্যবহার করার পরামর্শ দিই (এটিও দেখুন: শ্রেণিবদ্ধ )। এটি মাভিনকে আপনি কী করছেন তা আরও স্পষ্টভাবে বলেছে (এবং আমি খুঁজে পেয়েছি যে এম 2 স্লিপস এবং কিউ 4 ই উভয়ই এটির পছন্দ করে)।

<dependency>
  <groupId>com.myco.app</groupId>
  <artifactId>foo</artifactId>
  <version>1.0-SNAPSHOT</version>
  <type>test-jar</type>
  <scope>test</scope>
</dependency>

5
Com.myco.app এর জন্য বিশেষত টেস্ট-জারের ধরণের জন্য আলাদা আলাদা নির্ভরশীলতা এন্ট্রি থাকা উচিত?
নোহ ওয়াটকিন্স

20
ম্যাভেন-জার-প্লাগইন কনফিগারেশনে টেস্ট-জারটি যুক্ত করতে ভুলবেন না
ব্যবহারকারী 1338062

11
: আমি তো শুনে থ যখন প্রথম এই উত্তরটি পড়া হচ্ছে ... এটা আসলে কারণ এটা তার নিজের উপর অর্থে দেখা যায় না, আপনাকে প্রথমে উত্তর নিচে পড়া উচিত stackoverflow.com/questions/174560/...
TanguyP

179

বেস মডিউল পরামর্শের জন্য ধন্যবাদ। তবে, আমি কেবল এই উদ্দেশ্যে একটি নতুন মডিউল তৈরি করব না।

শিয়ারফায়ার মাভেন ডকুমেন্টেশন এবং একটি ব্লগে একটি গ্রহণযোগ্য উত্তর খুঁজে পেয়েছি । " পরীক্ষার ক্লাস সমেত একটি জার কীভাবে তৈরি করবেন " দেখুন।

এটি জার প্লাগইনsrc/test/java ব্যবহার করে কোডের জার ফাইল তৈরি করে যাতে পরীক্ষার সাথে মডিউলগুলি কোড ভাগ করে নিতে পারে।

<project>
  <build>
    <plugins>
     <plugin>
       <groupId>org.apache.maven.plugins</groupId>
       <artifactId>maven-jar-plugin</artifactId>
       <version>2.4</version>
       <executions>
         <execution>
           <goals>
             <goal>test-jar</goal>
           </goals>
         </execution>
       </executions>
     </plugin>
    </plugins>
  </build>
</project>

উপরে তৈরি করা সংযুক্ত পরীক্ষা জেআর ব্যবহার করার জন্য আপনি কেবল পরীক্ষার নির্দিষ্ট শ্রেণিবদ্ধের সাথে মূল শিল্পের উপর নির্ভরতা নির্দিষ্ট করে:

<project>
  ...
  <dependencies>
    <dependency>
      <groupId>com.myco.app</groupId>
      <artifactId>foo</artifactId>
      <version>1.0-SNAPSHOT</version>
      <type>test-jar</type>
      <scope>test</scope>
    </dependency>
  </dependencies>
  ...
</project> 

14
দ্রষ্টব্য, নির্ভরতা <ক্লাসিফায়ার> পরীক্ষাগুলি </ শ্রেণিবদ্ধকারী ব্যবহার করে সমস্যা থাকতে পারে। পরিবর্তে, <টাইপ> পরীক্ষা-জার </ টাইপ> ব্যবহার করুন। মাভেন jira.codehaus.org/browse/MNG-2045 এ একটি ইস্যু এবং IntelliJ youtrack.jetbrains.net/issue/IDEA-54254
এমিল সিট

এটি আমার পক্ষে খুব দরকারী, তবে আমি একটি সমস্যা পেয়েছি: যখন আমি "ইনস্টল -ডমেন.টাস্ট.স্কিপ = সত্য" চালিত করি, তখন নির্ভরতা পরীক্ষা-জারটিও প্রয়োজন হয় এবং প্রসেস ব্যর্থ হয়
জাভি পেদ্রেরে

@ জাভিপেদ্রে এটি আমার জন্য কাজ করে এমনকি যদি আমি 'এমভিএন ক্লিন ইনস্টল -ডস্কিপ টেস্টস = সত্য' করি এবং পরীক্ষা-জার তৈরি হবে। কোনও ত্রুটি নেই
কারসেল

1
@ অ্যালেন আপনি কি নিশ্চিত করেছেন যে আপনি জার প্যাকেজিংয়ের সময় সার্ভিস রেজাল্ট ট্রান্সফর্মারটি ব্যবহার করেছেন? অন্যথায় আপনি পরিষেবা ফাইল একে অপরকে ওভাররাইট করে শেষ করতে পারেন।
jontejj

1
maven.apache.org/plugins/maven-shade-plugin/example/… সেখানে আপনি এটি সম্পর্কে আরও পড়তে পারেন।
jontejj

12

আমরা পরীক্ষার কোডটি একটি এসআরসি / মেইন / জাভা হিসাবে একটি খাঁটি প্রকল্প তৈরি করে এবং প্রকল্পগুলিতে নিম্নলিখিত নির্ভরতা যুক্ত করে সমাধান করেছি:

    <dependency>
        <groupId>foo</groupId>
        <artifactId>test-base</artifactId>
        <version>1</version>
        <scope>test</scope>
    </dependency>

হ্যাঁ, ও কাজ করবে, ধন্যবাদ! আমি পছন্দ করি বিকল্প বিকল্প জন্য নীচে আমার মন্তব্য দেখুন।
ঝাঁকুনি

1
আমরা এই পদ্ধতির পাশাপাশি ব্যবহার করি, এটি কিছুটা নির্বোধ আপনাকে শ্রেণিবদ্ধ বা প্রকারের জন্য যেতে বাধ্য করা হয় (যা বেশিরভাগ ব্যবহারকারীর জন্য মাভেনে খুব কমই বেসিক হয়) এবং আপনাকে যখন সত্যিই প্রয়োজন হয় না তখন আপনাকে কিছুটা চেষ্টা করে জেআর তৈরি করতে হবে এটি বা - এই ক্ষেত্রে যেমন - আপনার পরীক্ষার নন-টেস্ট কোডটি কেবল পরীক্ষার কোডের জন্য বেস হিসাবে রয়েছে।
কুমারী 47

-3

হ্যাঁ ... কেবলমাত্র মেনের নির্ভরতা হিসাবে বেস মডিউলটি অন্তর্ভুক্ত করুন। যদি আপনি কেবল পরীক্ষার কোডটি উত্তরাধিকার সূত্রে পান তবে আপনি যখন শপথ ট্যাগটি ব্যবহার করবেন তখন তা নিশ্চিত করার জন্য মাভেন আপনার নিদর্শনগুলিতে কোডটি অন্তর্ভুক্ত করবেন না। এর মতো কিছু কাজ করা উচিত:

<dependency>
    <groupId>BaseGroup</groupId>
    <artifactId>Base</artifactId>
    <version>0.1.0-SNAPSHOT</version>
    <scope>test</scope>
</dependency>
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.