জুনিট ইউনিট পরীক্ষার জন্য কীভাবে জেভিএম প্যারামিটার সেট করবেন?


96

আমার কিছু জুনিট ইউনিট পরীক্ষা আছে যার জন্য চালানোর জন্য প্রচুর পরিমাণে হিপ-স্পেস প্রয়োজন - অর্থাত 1 জি। (তারা ওয়েবস্টার্ট অ্যাপের জন্য মেমরি-নিবিড় কার্যকারিতা পরীক্ষা করে যা কেবল পর্যাপ্ত হিপ-স্পেস দিয়ে চলবে এবং উইন 64৪-বিট মেশিনে অভ্যন্তরীণভাবে চালিত হবে - সুতরাং পরীক্ষার পুনর্নির্মাণ করা কোনও ব্যবহারিক পরামর্শ নয়))

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

এছাড়াও, সেগুলি আইডিই এবং বাক্স নির্দিষ্ট I তাই যদি আমি বাক্সগুলি স্যুইচ করি (আমি একাধিক মেশিনে বিকাশ করি) বা আমার সহকর্মীদের কেউ পরীক্ষা চালানোর চেষ্টা করে those সেটিংস স্থানান্তরিত হয় না। (এছাড়াও, অন্যান্য আইডিই যেমন एक्লিপস এবং নেটবিয়ানগুলি আমার সহকর্মীরা ব্যবহার করেন)) এফডাব্লুআইডাব্লু, আমরা উত্স কোড নিয়ন্ত্রণের জন্য মুরারি ব্যবহার করছি।

বিল্ড চক্রের জন্য, আমরা মাভেন ব্যবহার করছি, সুতরাং আমি জানি যে কীভাবে এর জন্য জেভিএম পরামিতি নির্দিষ্ট করতে হয়।

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


আমি সন্দেহ করি এটা সম্ভব! কোনও প্রদত্ত আইডিইর জন্য মেশিন জুড়ে, এটি সম্ভব হবে। তবে আইডিই জুড়ে আমি কীভাবে তা দেখতে পাচ্ছি না।
জেবি নিজেট

@ জেবিনিজেট - প্রদত্ত আইডিই (এটি ইন্টেলিজ আইডিইএ সরবরাহ করে) জন্য মেশিনগুলি নিয়ে আমি খুশি হব be
এএমিডেমে

উত্তর:


48

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

তবে পরিবেশের ওপরে এই ধরনের সেটিংস (অন্তত IntelliJ) স্থানান্তর করার কোনও সহজ বিকল্প নেই। আপনি আপনার ভাণ্ডারে IntelliJ প্রকল্প ফাইলগুলি প্রতিশ্রুতিবদ্ধ করতে পারেন: এটি কার্যকর হতে পারে তবে আমি এটির প্রস্তাব দিই না।

আপনি কিভাবে এই জন্য সেট করতে জানেন maven-surefire-plugin। ভাল. এটি সর্বাধিক বহনযোগ্য উপায় (উদাহরণস্বরূপ পাইটমলির উত্তর দেখুন)।

বিশ্রামের জন্য - আপনার অবশ্যই মনে রাখতে হবে যে JUnit পরীক্ষার কেসগুলি জাভা ক্লাসগুলির একগুচ্ছ, একক কর্মসূচি নয়। maven-surefire-pluginএই বিকল্পগুলি সেট করার জন্য এটি রানারের উপর নির্ভর করে (এটি আপনার স্বতন্ত্র জুনিত রানার, আপনার আইডিই হোক । এগুলি সেট করার কোনও "পোর্টেবল" উপায় নেই বলে বলা হচ্ছে, যাতে রানার নির্বিশেষে মেমরির সেটিংস প্রয়োগ করা হয়।

আপনাকে একটি উদাহরণ দেওয়ার জন্য: Xmxসার্লেট বিকাশ করার সময় আপনি প্যারামিটারটি সংজ্ঞায়িত করতে পারবেন না - এটি সংজ্ঞায়িত করার বিষয়টি পাত্রে। আপনি বলতে পারবেন না: "এই সার্লেটটি সর্বদা চালানো উচিত Xmx=1G


রান / ডিবাগ কনফিগারেশন কোথায়? আমি পরীক্ষাটি চালানোর সময় এটিকে পছন্দ বা প্রসঙ্গ মেনুতে দেখতে পাচ্ছি না?
ডিন হিলার

4
দ্রষ্টব্য যে এটি বিদ্যমান JUnit রান কনফিগারেশনগুলিকে পরিবর্তন করবে না, কেবলমাত্র আপনার ডিফল্ট পরিবর্তন করার পরে তৈরি করা হয়েছে। আপনাকে ম্যানুয়ালি বিদ্যমান পরিবর্তন করতে হবে।
মাইকফে

79

মাভেনে আপনি নিশ্চিতফায়ার প্লাগইনটি কনফিগার করতে পারেন

<plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-surefire-plugin</artifactId>
    <version>2.9</version>
    <configuration>
        <argLine>-Xmx256M</argLine>
    </configuration>
</plugin>

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


4
@ptomli - আমি সবসময় মন্তব্যগুলি অবিশ্বাস করি যা "অবশ্যই ..." থেকে শুরু হয়। ম্যাভেন বিল্ড চক্রের কাজগুলি চালনার সময় ইন্টেলিজ মাভেন ইন্টিগ্রেশন পম প্লাগইন কনফিগারেশন ব্যবহার করে। আইডিইতে ইউনিট পরীক্ষা চালানো একটি পৃথক প্রক্রিয়া, এবং ডিফল্টরূপে বিল্ড প্রক্রিয়া সম্পর্কে কোনও জ্ঞান থাকে না। আমার জানা মতে এগুলিকে সংযুক্ত করার কোনও উপায় নেই - যদিও আমি অন্যথায় বলাতে খুশি। এটি কি এমন কিছু যা আপনার জ্ঞান / সম্পন্ন হয়েছে - যা ক্ষেত্রে আপনি কীভাবে এটি ভাগ করতে পারেন?
এএমিডেমেট

4
আমি নিশ্চিত না যে এটি ইন্টেলিজ-এ সম্ভব। টিবিএইচ, তা থাকলেও, আমি সেই পদ্ধতির ব্যবহার করতে চাই না, যেহেতু সম্ভাবনা রয়েছে, আমি যদি আইডিইতে ইউনিট পরীক্ষা চালাচ্ছি, আমি আইডিই ডিবাগারের সুবিধা নিতে চাই, যা আমি করতে পারি না একটি এমভিএন পরীক্ষা চালিয়ে।
এএমমেডেমে

4
আসলে, IntelliJ এর ম্যাভেন ইন্টিগ্রেশন নেই যখন পৃথক ইউনিট পরীক্ষা নির্বাহ ম্যাভেন surefire কনফিগারেশন ব্যবহার করুন। উপরের ম্যাভেন কনফিগারেশনটি ব্যবহার -Xmx256Mকরার ফলে সরাসরি ইন্টেলিজিজ থেকে আপনার ইউনিট পরীক্ষা চালানোর সময় জাভা কমান্ড লাইনে উত্তীর্ণ হবে। এটি
হ্যাকটি

4
এফওয়াইআই: নেটবিনস তার পরীক্ষা চালাতে মাভেন সুফায়ারকেও ব্যবহার করে
ফেরিবিগ

4
@ কেকেভ ইন্টেলিজজের মাভেন ইন্টিগ্রেশন ইন্টেলিজজে পৃথক পরীক্ষা চালানো থেকে পৃথক। প্রথমটিতে ম্যাভেন রান কনফিগারেশন ব্যবহার করা হয় (এবং সে কারণে যুক্তিটি পড়ে), দ্বিতীয়টি ইউএন, টেস্টএনজি ... কনফিগারেশন ব্যবহার করে।
এবং


15

এই সমর্থন প্রশ্ন অনুসারে https://intellij-support.jetbrains.com/hc/en-us/commune/posts/206165789-JUnit-default-heap-size-overrmitted-

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

এই pom.xML স্নিপেট

        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-surefire-plugin</artifactId>
            <configuration>
                <argLine>-Xmx1024m</argLine>
            </configuration>
        </plugin>

বলে মনে হচ্ছে -Xmx1024 যুক্তিটি জুনিট পরীক্ষা রানের সাথে যুক্ত হবে, ইন্টেলিজজে 2016.2.4 দিয়ে।


13

আমি অন্যদের সাথে একমত হয়েছি যারা বলেছিলেন যে এই সেটিংস বিতরণ করার কোনও সহজ উপায় নেই।

গ্রহণের জন্য: আপনার সহকর্মীদের নিম্নলিখিতগুলি সেট করতে বলুন:

  • উইন্ডোজ পছন্দসমূহ / জাভা / ইনস্টল করা জেআরই:
  • যথাযথ জেআরই / জেডিকে নির্বাচন করুন (বা এটি সবার জন্য করুন)
  • সম্পাদনা করুন
  • ডিফল্ট ভিএম যুক্তি: -Xmx1024m
  • শেষ, ঠিক আছে।

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

নিম্নলিখিত কার্যনির্বাহী প্রক্রিয়াটিও সহায়তা করতে পারে: আইডিই কোনও পরীক্ষা চালাতে না পারলে বিকাশকারীকে পরীক্ষা করা উচিত যে মাভেন এই পরীক্ষাটি চালাতে পারে কিনা।

  • মাভেন এটি চালাতে পারলে ব্যর্থতার কারণ সাধারণত বিকাশকারীর আইডিই এর সেটিংস। বিকাশকারীদের এই সেটিংসটি পরীক্ষা করা উচিত।
  • মাভেন যদি পরীক্ষাও চালাতে না পারতেন তবে বিকাশকারী জানেন যে ব্যর্থতার কারণটি আইডিই নয়, তাই তিনি পরীক্ষার ডিবাগ করতে আইডিই ব্যবহার করতে পারেন।

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

ঠিক আছে - তবে এখন আপনি তো
টমাসের উত্তরটিই

2

আপনি সিস্টেমপ্রোপার্টিভেরিয়েবলগুলি ব্যবহার করতে পারেন (java.protocol.handler.pkgs আপনার জেভিএম যুক্তির নাম):

<plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-surefire-plugin</artifactId>
    <version>2.12.4</version>
    <configuration>
        <systemPropertyVariables>
            <java.protocol.handler.pkgs>com.zunix.base</java.protocol.handler.pkgs>
            <log4j.configuration>log4j-core.properties</log4j.configuration>
        </systemPropertyVariables>
    </configuration>
</plugin>

http://maven.apache.org/surefire/maven-surefire-plugin/example/system-properties.html


1

জাভা.লিবারিয়ান.পাথ জেভিএম প্যারামিটারের মধ্যে সীমাবদ্ধ একটি গ্রহন নির্দিষ্ট বিকল্প এটি অন্য জবাবের প্রস্তাবিত পুরো জেডিইকের পরিবর্তে নির্দিষ্ট উত্স ফোল্ডারের জন্য সেট করতে দেয়:

  1. উত্স ফোল্ডারটি নির্বাচন করুন যেখানে প্রোগ্রামটি চালু করতে শুরু করে (সাধারণত উত্স / পরীক্ষা / জাভা)
  2. সেই ফোল্ডারের জন্য সম্পত্তি পৃষ্ঠা খুলতে Alt লিখুন
  3. বাম প্যানেলে নেটিভ নির্বাচন করুন
  4. নেটিভ পাথ সম্পাদনা করুন। পথটি কর্মক্ষেত্রের সাথে নিখুঁত বা আপেক্ষিক হতে পারে, দ্বিতীয়টি হ'ল আরও পরিবর্তনশীল।

কেন মভেন আর্গলাইন ট্যাগটি সিস্টেম প্রপার্টিগুলির মধ্যে অগ্রাধিকার দেওয়া উচিত সে সম্পর্কে বিশদ বিষয়ে আগ্রহীদের জন্য, দেখুন, উদাহরণস্বরূপ:

মাভেন পরীক্ষায় নেটিভ জেএনআই ফাইলগুলি তুলুন (lwjgl)


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