লঞ্চের কারখানার জন্য NoClassDefFoundError এর ফলে JUnit 5 ব্যবহার করে কোনও পরীক্ষা খুঁজে পাওয়া যায় নি


99

সমস্যাটি

যখনই আমি আমার প্রকল্পগুলি JUnit পরীক্ষা পরিচালনা করি (জাভা 9 এবং Eclipse অক্সিজেন 1.a এর সাথে JUnit 5 ব্যবহার করে) আমি এমন সমস্যার মুখোমুখি হচ্ছি যে গ্রহনের কোনও পরীক্ষা খুঁজে পাওয়া যায় না।

বর্ণনা

রান কনফিগারেশনের অধীনে, গ্রহনটি এমনকি @ টেস্টের সাথে টীকাযুক্ত পদ্ধতিটি খুঁজে পায় না, তবে পরিবর্তে কেবল আমাকে " (সমস্ত পদ্ধতি) " দেখায় । নিম্নলিখিত চিত্রটি আশা করি আমার সেটআপটির আরও ভাল ঝলক দেয়:

https://imgur.com/a/FTe9c

কনসোল আউটপুট:

java.lang.NoClassDefFoundError: org/junit/platform/launcher/core/LauncherFactory
    at org.eclipse.jdt.internal.junit5.runner.JUnit5TestLoader.<init>(JUnit5TestLoader.java:31)
    at java.base/jdk.internal.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
    at java.base/jdk.internal.reflect.NativeConstructorAccessorImpl.newInstance(Unknown Source)
    at java.base/jdk.internal.reflect.DelegatingConstructorAccessorImpl.newInstance(Unknown Source)
    at java.base/java.lang.reflect.Constructor.newInstance(Unknown Source)
    at java.base/java.lang.Class.newInstance(Unknown Source)
    at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.createRawTestLoader(RemoteTestRunner.java:368)
    at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.createLoader(RemoteTestRunner.java:363)
    at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.defaultInit(RemoteTestRunner.java:307)
    at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.init(RemoteTestRunner.java:222)
    at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.main(RemoteTestRunner.java:206)
Caused by: java.lang.ClassNotFoundException: org.junit.platform.launcher.core.LauncherFactory
    at java.base/jdk.internal.loader.BuiltinClassLoader.loadClass(Unknown Source)
    at java.base/jdk.internal.loader.ClassLoaders$AppClassLoader.loadClass(Unknown Source)
    at java.base/java.lang.ClassLoader.loadClass(Unknown Source)
    ... 11 more

এতক্ষণ যা চেষ্টা করেছি

আমি ইতিমধ্যে চেষ্টা করেছি

  • বিল্ড পাথ থেকে পরীক্ষার ফোল্ডারটি সরিয়ে আবার এটিকে যুক্ত করতে।
  • @ টেস্ট দ্বারা টীকাযুক্ত পদ্ধতিতে ঘোরাফেরা দিয়ে পরীক্ষা শুরু করতে এবং তারপরে "JUnit পরীক্ষা হিসাবে চালান" ক্লিক করুন।
  • জুনিটকে বিল্ডপথ থেকে সরান এবং এটি আবার যুক্ত করুন
  • পুনরায় সূচনা গ্রহন
  • আমি প্রকল্পের পুরো প্রকল্পটি একটি মেশিন থেকে অন্য মেশিনেও স্থানান্তরিত করেছি এবং সেখানে প্রদত্ত গ্রহনের ইনস্টলেশনটি দিয়ে চেষ্টা করেছি
  • পরীক্ষার পদ্ধতির নাম পরিবর্তন করতে।
  • @ টেস্ট টীকাটি পুনরায় টাইপ করতে

এর কয়েকটি পদক্ষেপ এখানে পাওয়া যাবে , তবে শেষ পর্যন্ত সমস্যাটি থেকেই গেল।


তবে আপনি কি এর উত্তরে বর্ণিত পার্থক্যটি সন্ধান করার চেষ্টা করেছেন - স্ট্যাকওভারফ্লো . com/ জিজ্ঞাসা / 34413/… ?
নামান

উত্তর:


22

আপনি ইলিপস বাগ 525959 দৌড়ে গিয়েছেন যা ইতিমধ্যে ঠিক হয়ে গেছে এবং যা আগামী ২৩ শে মার্চ, 2018, অক্সিজেন.3 (4.7.3) প্রকাশিত হবে।

কর্মপরিকল্পনা হিসাবে, আপনার পরীক্ষার কোডটি একটি পৃথক প্রকল্পে রাখুন এবং মডিউলপথে প্রকল্পের অধীনে প্রকল্পটি যুক্ত করুন, তবে module-info.javaআপনার পরীক্ষার প্রকল্পে একটি যুক্ত করবেন না । আপনার প্রকল্প, শ্রেণি এবং মডিউল নামকরণের সাথে এটির মতো দেখতে হবে:

এখানে চিত্র বর্ণনা লিখুন

আমার ভিডিওটি দেখুন যা ক্রিয়াকলাপে অক্সিজেন.1.1a এ জাভা 9 এবং JUnit 5 দেখায়


4
@ নালপয়েন্টার মানে আমি একটি নতুন জাভা প্রকল্প তৈরি করতে চাই যা মডুলার নয় (নেই module-info.java)। ইক্লিপসে একটি জাভা প্রকল্পের একটি একক আউটপুট ফোল্ডার রয়েছে এবং এর জন্য এটিতে কেবল একটি বা কোনওটিই থাকতে পারে না module-info.java। তবে আপনি প্রকল্পের মডিউলপথে মডিউল যুক্ত করতে পারেন যদিও প্রকল্পটি মডিউল নয় (কোনও নেই module-info.java)।

4
@ শ্যাডোড্রাগন এই হ্যাকটির অপূর্ণতা হ'ল আমাদের পরীক্ষার ক্লাসগুলির জন্য আলাদা প্যাকেজের নাম প্রয়োজন, এইভাবে প্যাকেজ-প্রাইভেট টেস্টিং করা যায় না
kleopatra

7
আমি সবেমাত্র অক্সিজেন .3 (4.7.3) ইনস্টল করেছি এবং সমস্যাটি অব্যাহত রয়েছে।
ব্যবহারকারী 118967

4
@ chomp আপনার যদি 2018-09 হয় তবে লক্ষণগুলি একই রকম দেখা গেলেও এটি একটি আলাদা সমস্যা। যদি কোনও পরীক্ষা খুঁজে পাওয়া যায় না, তবে এটি বেশিরভাগ ক্ষেত্রে একটি ভুল ক্লাসপথ / মডিউল পাথ ( প্রকল্প> বৈশিষ্ট্য: জাভা বিল্ড পাথ ) এর কারণে।
howlger

4
@ হোলগার ধন্যবাদ সর্বশেষ সংস্করণে আপগ্রেড করার পরে এই সমস্যাটি চলে গেছে। আপনার সাহায্যের জন্য আবার ধন্যবাদ :).
দত্ত

136

আমি পরীক্ষার ডানদিকে ক্লিক করে এবং 'রান কনফিগারেশন' বাছাই করে এবং "টেস্ট রানার:" নির্বাচনটি এখানে দেখানো হিসাবে 'JUnit 4' এ পরিবর্তন করে সমস্যার সমাধান করেছি:

রান কনফিগারেশনের স্ক্রিনশট

আমি আবার পরীক্ষা চালানো এবং এটি কাজ করে।


13
এটা মজার বিষয় যে JUnit5 ব্যবহার করার সময় রান কনফিগারেশনে "JUnit4" নির্বাচন করা। আমি কোনও বড় প্রকল্পের সাথে ডিল করার সময় আমি যে একটি ভাল সমাধানের উপর নির্ভর করতে পারি তা বলব না।
লেভেন্ট ডিভিলিওগ্লু

4
আমি এই সমাধানটিকে সন্দেহজনকও বলে মনে করি, এটি কেন কাজ করে এবং কী কী ঝুঁকি নিতে পারে সে সম্পর্কেও তার ব্যাখ্যা নেই।
আমাদান

এটি যদি আপনার সমস্যার সমাধান না করে তবে একই উইন্ডোতে শ্রেণিপথ ট্যাবে যান এবং বুটস্ট্র্যাপ লাইব্রেরিতে JUnit যুক্ত করুন।
অভি

ধন্যবাদ; 4 ইউনাইট নির্বাচন করা আমার সমস্যাগুলি সমাধান করেছে। আপাতত সমস্যাটি সমাধান করার সহজতম উপায়।
টেস

আমার মতে এই কম আক্রমণাত্মক সমাধান, এটি উত্স কোডটি পরিবর্তন না করেই।
রাফায়েল রোচা

65

আমার একই সমস্যাটি এসটিএস 3.9.1 এর সাথে রয়েছে। এটি একটি অলিপ্স বাগের মতো মনে হয়, তবে এটি ঠিক করার জন্য junit-platform-launcherআপনি আপনার প্রকল্পের একটি পরীক্ষার নির্ভরতা যুক্ত করতে পারেন ( https://mvnrepository.com/artifact/org.junit.platform/junit-platform-launcher )

এইভাবে আমি আমার প্রকল্পের জন্য করেছি যা গ্রেড ব্যবহার করে:

dependencies {
    // other stuff here

    testCompile group: 'org.junit.jupiter', name: 'junit-jupiter-engine', version: "5.${junit5MinorVersion}"
    testCompile group: 'org.junit.platform', name: 'junit-platform-launcher', version: "1.${junit5MinorVersion}"
}

গ্রেড.প্রোপার্টি ফাইল:

junit5MinorVersion=1.0

আমি বিশ্বাস করি ইন্টেলিজ আইডিইএ ব্যবহার করার সময় আপনি যদি এই ব্যতিক্রমটি দেখেন তবে একই প্রযোজ্য।


4
গ্রেডেল ব্যবহার করলে সাধারণত এটি যায় build.gradle। আপনি যদি ম্যাভেন ব্যবহার করেন তবে এটি pom.xml। মাভেনের ফর্ম্যাটটি যদিও আলাদা।
আন্দ্রেই ক্যারাইভান্সকি

4
এটা আমার জন্য এটি স্থির। ধন্যবাদ!
ক্রিস

4
<ডিপেন্ডেন্সিগুলি> <ডিপেন্ডেন্সি> <groupId> org. জুনিট.জুপিটার </ গোষ্ঠী << আর্টিফ্যাক্টআইডি> জুনিট-জুপিটার-ইঞ্জিন </ em> <version> 5.1.0 </version> এর ভিতরে যাওয়ার জন্য পম.এক্সএমএল স্নিপেট এখানে Here <scope> পরীক্ষা </ translation> </d dependency> <d dependency> <groupId> org. junit.platfor </groupId> <artifactId> জুনিট-প্ল্যাটফর্ম-লঞ্চার </ আর্টিক্ট আইডি> <version> 1.1.0 </version> < সুযোগ> পরীক্ষা </
translation

4
তবুও জুনিট-প্ল্যাটফর্ম 1.1.0 যুক্ত করা আমার পক্ষে কাজ করে না। এটি একই বার্তাটি দেখায় "জুনিয়ট 5 ব্যবহার করে পরীক্ষার রানার সাথে কোনও পরীক্ষা পাওয়া যায়নি"
পি সতীশ প্যাট্রো

4
উপরের যোগ করার পরে @ পতিশপাত্রো আপনাকে সেই জুনিট পরীক্ষা মামলার জন্য কনফিগারেশন চালাতে হবে এবং তারপরে ক্লাসপাথ ট্যাবে যেতে হবে-> অ্যাডভান্সড-> লাইব্রেরি যুক্ত করুন-> ঠিক আছে-> জুনিট-> সমাপ্তি। তারপরে এগিয়ে যান এবং চালান hisএটি জুনিটের ফাঁসির সময় গ্রন্থাগারটি যুক্ত করবে
জাইসন ভার্গিজ

28

আমার ক্ষেত্রে, সমস্যাটি আমার এবং একটিগ্রহের মতো কোনও আইডিই ছিল না। আমি JUnit 4 টেস্ট ক্লাসটি আমদানি করেছি।

সুতরাং এটি এক আমদানি করবেন না:

import org.junit.Test  // JUnit 4

তবে এটি আমদানি করুন:

import org.junit.jupiter.api.Test // JUnit 5

আমি JUnit 4 এবং 5 এর মধ্যে স্যুইচ করছিলাম কারণ বর্তমান প্রকল্পটি 5 ইউনিট 5 ব্যবহার করছে, তবে হাইবারনেট ইত্যাদিতে বাগগুলি রিপোর্ট করার সময় আমাকে জুনিত ৪-এ স্যুইচ করা দরকার I ♂️‍♂️
কাওু

21

উত্তরগুলি এখনও পর্যন্ত অন্যান্য লোকদের সাথে কোড ভাগ করার সমস্যাটি সমাধান করে নি যারা অগত্যা গ্রহনটি ব্যবহার করে না। এখানে একটি প্রস্তাব। চাঁদটি হল Eclipse কেস সমাধান করার জন্য একটি মভেন প্রোফাইল ব্যবহার করা।

এটি ধরে নেওয়া হয় যে আপনি আপনার পোমে কোনও সম্পত্তি সংজ্ঞায়িত করেছেন junit5.versionযেমন:

<properties>
    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
    <junit5.version>5.1.1</junit5.version>
</properties>

তারপরে profilesবিভাগে নিম্নলিখিতটি যুক্ত করুন:

<profiles>
    <profile>
        <id>eclipse</id>
        <dependencies>
            <dependency>
                <groupId>org.junit.jupiter</groupId>
                <artifactId>junit-jupiter-engine</artifactId>
            </dependency>
            <dependency>
                <groupId>org.junit.platform</groupId>
                <artifactId>junit-platform-launcher</artifactId>
            </dependency>
        </dependencies>
        <dependencyManagement>
            <dependencies>
                <dependency>
                    <groupId>org.junit.jupiter</groupId>
                    <artifactId>junit-jupiter-engine</artifactId>
                    <version>${junit5.version}</version>
                    <scope>test</scope>
                </dependency>
                <dependency>
                    <groupId>org.junit.platform</groupId>
                    <artifactId>junit-platform-launcher</artifactId>
                    <version>1.1.1</version>
                    <scope>test</scope>
                </dependency>
            </dependencies>
        </dependencyManagement>
    </profile>
</profiles>

এর পরে আপনাকে যা করতে হবে তা হ'ল আপনার স্থানীয় একিলেসে প্রোফাইল নির্বাচন করা: আপনার প্রকল্পে ডান ক্লিক করুন এবং নির্বাচন করুন Maven > Select Maven Profiles...(বা হিট Ctrl+ Alt+ P), এবং তারপরে আমরা সবে তৈরি "গ্রহন" প্রোফাইলটি পরীক্ষা করে দেখুন।

ম্যাভেন প্রোফাইল নির্বাচন

এটি দিয়ে আপনি কাজ শেষ করেছেন। আপনারগ্রহণটি প্রত্যাশা অনুযায়ী জুনিট 5 পরীক্ষা চালাবে, তবে আপনি যে কনফিগারেশন যুক্ত করেছেন তা অন্য বিল্ডগুলি বা অন্যান্য আইডিইকে দূষিত করবে না


14

জুনিট বৃহস্পতির (v.5.5.1) এর সাথে এই মভেন নির্ভরতা যুক্ত করা সমস্যার সমাধান করে।

<dependency>
    <groupId>org.junit.platform</groupId>
    <artifactId>junit-platform-launcher</artifactId>
    <version>1.5.1</version>
    <scope>test</scope>
</dependency>

আমি স্প্রিং বুট ২.x এর জন্য একটি জেআর প্রকল্প তৈরি করেছি যা জুনিয়ট ৫ এ নিয়েছিল I আমি এই নির্ভরতা যুক্ত করেছি এবং এটি এটি স্থির করেছে বলে মনে হয়। ধন্যবাদ!
ডেভিড ব্র্যাডলি

14

সহজ ফিক্স: (জুনিয়ট 5 লাইব্রেরি যুক্ত করুন)

নির্দেশাবলী:

  • প্রকল্পে ডান ক্লিক করুন -> বিল্ড পাথ -> বিল্ড পাথ কনফিগার করুন
  • পপ-আপে -> লাইব্রেরি যুক্ত করুন -> জুনিট -> জুনিয়ট 5 -> সমাপ্ত -> প্রয়োগ করুন
  • আপনার প্রকল্পে যুক্ত হওয়া 5 লাইব্রেরি (এবং এর জারগুলি) দেখতে পাওয়া উচিত
  • প্রকল্পে ডান ক্লিক করুন -> ম্যাভেন -> আপডেট প্রকল্প -> ঠিক আছে

9

সমাধানগুলির কোনওটিই সহায়তা করেনি:

সমস্যাটি হল যে Eclipse 2018-12-এ JUnit 5.3.1 এর জন্য সমর্থন রয়েছে। আপনি যদি এর আগে কোনও সংস্করণ দিয়ে এটি শুরু করেন তবে এটি ব্যর্থ হবে।

সুতরাং আপনি কমপক্ষে 5.3.1 ব্যবহার করেছেন তা নিশ্চিত করুন।

5.4.0 খুব কাজ করে।

আপনার প্যারেন্ট পম যদি স্প্রিং বুট হয় তবে আপনাকে (নির্ভরতা পরিচালনায়) জুনিট-বৃহস্পতি-এপি একই সংস্করণে সেট করা আছে তা নিশ্চিত করতে হবে । আপনার জুনিট-প্ল্যাটফর্ম-রানার বা -ল্যাঞ্চারের দরকার নেই !


4
বখশিশের জন্য ধন্যবাদ. আমি 2019-3 ব্যবহার করছি এবং আমি <junit-jupiter.version>5.4.1</junit-jupiter.version>স্প্রিং বুটে ব্যবহৃত সংস্করণ (2.1.3.RELEASE) ওভাররাইড করার জন্য সম্পত্তি যুক্ত করেছি ।
রীতেশ

4
এটিই আমার জন্য এটি স্থির করেছিল। আমি-লঞ্চার নির্ভরতা অপসারণ করেছি এবং এটি কাজ শুরু করে। (2019-09 এবং junit 5.4.2 গ্রহণ)
রেমন্ড

এই সমাধানটি আমার পক্ষেও কাজ করে। যাইহোক, আমার ক্ষেত্রে, আমি 5.3.1 থেকে 5.5.1 এবং জুনিট-প্ল্যাটফর্ম-ইঞ্জিনে 1.5.5 এ পরিবর্তিত হয়েছি।
অরওয়ান খইরউদ্দিন

4
এটি আমার জন্য এটি স্থির করে দিয়েছে। গ্রহন 2020-03 পরীক্ষায় জুনিট সংস্করণ 5.5.2 দিয়ে শুরু হয়নি তবে 5.6.0 দিয়ে। আপনার উত্তরের একটি সাধারণ আপডেট হিসাবে: কমপক্ষে জুনিট সংস্করণ গ্রহণের ব্যবহারের প্রয়োজন হতে পারে।
লার্স ব্রিম

8

আন্দ্রেই ক্যারাইভান্সকি'র উত্তর অনুসরণ করে এখানে মাভেন পিওএম ঘোষণা:

<properties>
    ...
    <junit-jupiter.version>5.2.0</junit-jupiter.version>
    <junit-platform.version>1.2.0</junit-platform.version>
    ...
</properties>

<dependencies>
    ...
    <dependency>
        <groupId>org.junit.jupiter</groupId>
        <artifactId>junit-jupiter-engine</artifactId>
        <version>${junit-jupiter.version}</version>
        <scope>test</scope>
    </dependency>
    <dependency>
        <groupId>org.junit.platform</groupId>
        <artifactId>junit-platform-launcher</artifactId>
        <version>${junit-platform.version}</version>
        <scope>test</scope>
    </dependency>
    ...
</dependencies>

হালনাগাদ

আলেকজান্ডার ওয়েসেলের মন্তব্য অনুসারে আপনি org.junit ব্যবহার করতে পারেন : গ্রীক সম্পর্কে প্রশ্নের উত্তরে বর্ণিত জুনিট-বোম লঞ্চ ফ্যাক্টরীর জন্য NoClassDefFoundError এর কারণে JUnit 5 ব্যবহার করে কোনও পরীক্ষা খুঁজে পাওয়া যায়নি


4
বৃহস্পতি এবং প্ল্যাটফর্ম সংস্করণগুলির জন্য বৈশিষ্ট্যগুলি ঘোষণা করবেন না, পরিবর্তে বিওএম ব্যবহার করুন । মূলত এর সাথে নির্ভরতা ব্যবস্থাপনা ট্যাগে scope=import type=pomবিওএমের উপর নির্ভরতা যুক্ত করুন, তারপরে নির্ভরতা বিভাগে কোনও সংস্করণ না দিয়েই পরীক্ষার সুযোগে জুনিট-প্ল্যাটফর্ম-লঞ্চার এবং জুনিট-জুপিটার-ইঞ্জিনের উপর নির্ভরতা যুক্ত করুন। বিওএম সর্বদা নিশ্চিত করবে যে ক্লাসপথে আপনার কাছে ইউনিত প্ল্যাটফর্ম এবং বৃহস্পতির একটি মাত্র সংস্করণ রয়েছে এবং সংশ্লিষ্ট সংস্করণগুলি যার উদ্দেশ্যগুলি রয়েছে (উদাহরণস্বরূপ, 1.2.0 সহ 5.2.0)।
আলেকজান্ডার ওয়েসেল

@ আলেকজান্ডার ওয়েসেল আমার কাছে কোনও বিওএম নেই। এটি মাভেনের সাথে যে কোনও নির্ভরতা ঘোষণা করতে হবে, যেখানেই এটি হতে পারে কেবল উদাহরণ উদাহরণ example
জেরোড ব্রোজার

4
এটি আপনার কাছে একটি বিওএম আছে (বা বরং আপনার প্রকল্পে রয়েছে) not আমি ব্যাখ্যা করছিলাম যে জুনিয়ট 5 সরবরাহ করে এমন বিওএম আমদানি করে আপনি জুনিট বৃহস্পতি এবং জুনিট প্ল্যাটফর্ম সংস্করণগুলি সামঞ্জস্যপূর্ণ তা নিশ্চিত করতে পারেন এবং স্বতন্ত্র নির্ভরতার মধ্যে আপনাকে কোনও সংস্করণ ঘোষণার প্রয়োজন হবে না, সুতরাং সংস্করণটি ঘোষণা করার দরকার নেই বৈশিষ্ট্য। পরিষ্কার হতে হবে: আপনার উদাহরণটি ঠিক কাজ করে । তবে JUnit BOM আমদানি করা কিছুটা মার্জিত (আমার বিনীত মতে) এবং কিছু পরিস্থিতিতে নিরাপদ।
আলেকজান্ডার ওয়েসেল


7

এফওয়াইআই, "জুনিট 5 ব্যবহার করে কোনও পরীক্ষার সন্ধান পাওয়া যায় নি" এর আরেকটি কারণ (অজান্তে বা ইচ্ছাকৃতভাবে) পরীক্ষার কেসগুলি "ব্যক্তিগত" হিসাবে ঘোষণা করা হচ্ছে:

// Example of test case that doesn't get included
@Test
private void testSomeMethod() {
}

তাদের প্রকাশ্য হওয়া দরকার।


6

আপনাকে একই লাইব্রেরিটি যুক্ত করতে হবে একই সমস্যার মুখোমুখি, জুনিট লাইব্রেরিটি ইতিমধ্যে গ্রহনের পাশাপাশি সরবরাহ করা হয়েছে যাতে আপনার কেবল নীচে অনুসরণ করতে হবে

পাথ তৈরি করুন> বিল্ড পাথ কনফিগার করুন> গ্রন্থাগার> গ্রন্থাগার যুক্ত করুন> ইউনাইট> পরবর্তী> সমাপ্ত

এটা আমার জন্য কাজ করে


এটি গ্রহণে সূক্ষ্মভাবে কাজ করেছিল। সংস্করণ: 2020-06 (4.16.0) বিল্ড আইডি: 20200615-1200
ওজেভিএম

4

একটি নতুন টেস্টকেস তৈরি করার পরে আমি একই সমস্যা পেয়েছি: গ্রহন -> নতুন -> জুনিত পরীক্ষার কেস। এটি অ্যাক্সেস লেভেল সংশোধক ছাড়াই একটি শ্রেণি তৈরি করে। আমি ক্লাস কীওয়ার্ডের আগে জনসাধারণকে রেখে সমস্যার সমাধান করতে পারি ।


শ্রেণি এবং পদ্ধতি উভয়ই পাবলিক কীওয়ার্ডের প্রয়োজন। জুনিট.আর.জুনিট ৪
জাভাদোক /

4

শুরু থেকে ত্রুটি বার্তাটি আপনাকে জানিয়ে দেয় যে শ্রেণিটি পাওয়া যায় নি: NoClassDefFoundErrorযার অর্থ পাথ থেকে জুনিটই সমস্যা।

  1. প্রজেক্ট ফোল্ডারটিতে ডান ক্লিক করুন এবং বৈশিষ্ট্যগুলি নির্বাচন করুন বা প্রকল্প ফোল্ডারটি নির্বাচন করুন এবং সিএমডি + i নির্বাচন করুন।

  2. "জাভা বিল্ড পাথ" তালিকা থেকে নির্বাচন করুন।

  3. "লাইব্রেরি" ট্যাবটি নির্বাচন করুন
  4. JUnit 5 (বা JUnit 4) যদি "Modulepath" এ যুক্ত হয় তবে "JUnit 5" নির্বাচন করুন এবং সরান টিপুন।
  5. "ক্লাসপাথ" নির্বাচন করুন, "লাইব্রেরি যুক্ত করুন ..." টিপুন।
  6. খোলা "লাইব্রেরি যুক্ত করুন" উইন্ডো থেকে, জুনিত নির্বাচন করুন, পরবর্তী টিপুন।
  7. আপনার প্রয়োজনীয় JUnit গ্রন্থাগার সংস্করণ নির্বাচন করুন এবং সমাপ্তি টিপুন।

এটাই সব। আবার পরীক্ষা চালানোর চেষ্টা করুন।


4

আপনার এটি জানা উচিত:

@Before থেকে junit4 @Test সঙ্গে যায়: " আমদানি org.junit.Test "

এবং

@BeforeEach থেকে Junit5 ": সঙ্গে যায় আমদানি org.junit.jupiter.api.Test "

সুতরাং আপনি জুনিতের একই সংস্করণ থেকে আমদানিগুলি ব্যবহার করছেন তা নিশ্চিত করুন, অন্যথায় এটি আমার অনুমান করে কাজ করবে না।


3

এসটিএস 3.9.1 ব্যবহার করে আমি একই সমস্যা পেয়েছি। যাইহোক, বর্তমানে আমার কোনও নতুন JUnit5 বৈশিষ্ট্য প্রয়োজন নেই, তাই আমি একটি পুরানো সংস্করণ ব্যবহার করার জন্য জোর করার চেষ্টা করেছি। মাভেন ব্যবহার করা হলে, আপনি আপনার pom.xML এ নিম্নলিখিত নির্ভরতা যুক্ত করতে পারেন:

<dependency>
    <groupId>org.junit.platform</groupId>
    <artifactId>junit-platform-launcher</artifactId>
    <version>${junit.platform.version}</version>
    <scope>test</scope>
</dependency>

<dependency>
    <groupId>org.junit.jupiter</groupId>
    <artifactId>junit-jupiter-engine</artifactId>
    <version>${junit.jupiter.version}</version>
    <scope>test</scope>
</dependency>

<dependency>
    <groupId>org.junit.vintage</groupId>
    <artifactId>junit-vintage-engine</artifactId>
    <version>${junit.vintage.version}</version>
    <scope>test</scope>
</dependency>

এটি আমার জন্য কৌশলটি করেছে (কমপক্ষে যতক্ষণ আমার স্পষ্টভাবে JUnit5 এর দরকার নেই)।


আপনি JUnit5 ব্যবহার করছেন তবে আপনি কেন "org.junit.vintage" যুক্ত করলেন? এটি কেবল পশ্চাদপদ সামঞ্জস্যের জন্য (যেমন পুরানো JUnit ব্যবহারের জন্য) আফাইক।
লেভেন্ট ডিভিলিওগ্লু

কারণ সেই প্রকল্প এবং এসটিএস 3.9.1 এর সাথে আমি JUnit5 তবে JUnit4 ব্যবহার করতে পারিনি।
mahe

3

হিসাবে সবাই এর আইডিই বাগ অবহিত, আমি চেষ্টা Eclipseএবং STS। উভয় ক্ষেত্রেই এটি ব্যর্থ হচ্ছে।

একটি workaround হিসাবে, আমি নীচের মত pom.xML ফাইল পরিবর্তন করে ঠিক করেছি।

আমি এই দুটি মাভেন নির্ভরতা যুক্ত করেছি junit-jupiter-engineএবং junit-platform-launcher

pom.xML

<!-- https://mvnrepository.com/artifact/org.junit.jupiter/junit-jupiter-engine -->
    <dependency>
        <groupId>org.junit.jupiter</groupId>
        <artifactId>junit-jupiter-engine</artifactId>
        <version>${junit-jupiter.version}</version>
        <scope>test</scope>
    </dependency>

    <!-- https://mvnrepository.com/artifact/org.junit.platform/junit-platform launcher -->
    <dependency>
        <groupId>org.junit.platform</groupId>
        <artifactId>junit-platform-launcher</artifactId>
        <version>${junit-platform.version}</version>
        <scope>test</scope>
    </dependency>
</dependencies>

এছাড়াও দয়া করে সম্পত্তি ট্যাগটিতে উভয় খাঁটি নির্ভরতার সংস্করণ যুক্ত করার বিষয়টি নিশ্চিত করুন।

<properties>
    <java.version>1.8</java.version>
    <junit-jupiter.version>5.2.0</junit-jupiter.version>
    <junit-platform.version>1.2.0</junit-platform.version>
</properties>

4
জুনিট-প্ল্যাটফর্ম-লঞ্চার নির্ভরতা যুক্ত করা আমার জন্য সমস্যার সমাধান করে। ধন্যবাদ
ভেঙ্কটেশ মনোহর

3

আমি গ্রহণ করছি 2019-09।

আমাকে জুনিট-বোম সংস্করণটি কমপক্ষে 5.4.0 এ আপডেট করতে হয়েছিল। আমার পূর্বে 5.3.1 ছিল এবং এটি ওপির একই লক্ষণগুলির কারণ ঘটেছে।

আমার কনফিগারেশন এখন:

    <dependencyManagement>
        <dependencies>
            <dependency>
                <groupId>org.junit</groupId>
                <artifactId>junit-bom</artifactId>
                <version>5.5.2</version>
                <type>pom</type>
                <scope>import</scope>
            </dependency>
        </dependencies>
    </dependencyManagement>

আর একটি বিকল্প হ'ল <জুনিট-জুপিটার.ভারশন> 5.4.0 </ জুনিট-জিউপিটার.ভারশন> পম বৈশিষ্ট্যগুলিতে যুক্ত করুন
উরি লোয়া

2

যেহেতু কোড ব্লকগুলি মন্তব্যে পোস্ট করা সম্ভব নয় এখানে পুম টেমপ্লেটটি আমি JUnit 5 এর জন্য প্রয়োজনীয় প্রকল্পগুলিতে ব্যবহার করছি এটি গ্রহণের জন্য "জুনিত টেস্ট হিসাবে চালান" এবং প্লেন প্লেইন মাভেনের সাহায্যে প্রকল্পটি নির্মাণের অনুমতি দেয়।

<project
    xmlns="http://maven.apache.org/POM/4.0.0"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>

    <groupId>group</groupId>
    <artifactId>project</artifactId>
    <version>0.0.1-SNAPSHOT</version>
    <name>project name</name>

    <dependencyManagement>
      <dependencies>
        <dependency>
        <groupId>org.junit</groupId>
        <artifactId>junit-bom</artifactId>
        <version>5.3.1</version>
        <type>pom</type>
        <scope>import</scope>
        </dependency>
      </dependencies>
    </dependencyManagement>

    <dependencies>
      <dependency>
        <groupId>org.junit.jupiter</groupId>
        <artifactId>junit-jupiter-engine</artifactId>
        <scope>test</scope>
      </dependency>

      <dependency>
        <groupId>org.junit.platform</groupId>
        <artifactId>junit-platform-launcher</artifactId>
        <scope>test</scope>
      </dependency>

      <dependency>
        <!-- only required when using parameterized tests -->
        <groupId>org.junit.jupiter</groupId>
        <artifactId>junit-jupiter-params</artifactId>
        <scope>test</scope>
      </dependency>
    </dependencies>
</project>

আপনি দেখতে পাচ্ছেন যে আপনি এখন JUnit আপডেট করতে চান তবে আপনাকে কেবল এক জায়গায় সংস্করণটি আপডেট করতে হবে। এছাড়াও আপনার POM এ কোথাও প্ল্যাটফর্ম সংস্করণ নম্বর প্রদর্শিত হবে না (সামঞ্জস্যপূর্ণ সংস্করণে), এটি স্বয়ংক্রিয়ভাবে junit-bomআমদানির মাধ্যমে পরিচালিত হয় ।


2

আমি ব্যাবহার করছি:

স্প্রিং টুল স্যুট 4 সংস্করণ: 4.4.2.RELEASE বিল্ড আইডি: 201911201053 জাভা সংস্করণ: 1.8.0_191

এবং প্রদর্শিত বার্তাটি পরীক্ষা রানার 'JUnit5' এর সাথে কোনও পরীক্ষা খুঁজে পাওয়া যায়নি

আমার জন্য যা কাজ করেছিল তা ছিল নীচের কনফিগারেশন

    <properties>
        <java.version>1.8</java.version>
        <junit-jupiter.version>5.5.2</junit-jupiter.version>
        <junit-platform.version>1.5.2</junit-platform.version>
    </properties> 

    <dependency>
        <groupId>org.junit.jupiter</groupId>
        <artifactId>junit-jupiter-engine</artifactId>
        <version>${junit-jupiter.version}</version>
        <scope>test</scope>
    </dependency>
    <dependency>
        <groupId>org.junit.platform</groupId>
        <artifactId>junit-platform-launcher</artifactId>
        <version>${junit-platform.version}</version>
        <scope>test</scope>
    </dependency>

2

আপনি JUnit 5 প্ল্যাটফর্ম লঞ্চারটি গোষ্ঠীটির সাথে অনুপস্থিত: 'org.junit.platform', নাম: 'জুনিট-প্ল্যাটফর্ম-লঞ্চার'

শুধু আপনার POM এ যুক্ত করুন:

<dependency>
       <groupId>org.junit.platform</groupId>
       <artifactId>junit-platform-launcher</artifactId>
    </dependency>

1

অ্যালিজেন সংস্করণ অক্সিজেন.3a রিলিজ (৪.7.৩ এ) তেও আমি একই ত্রুটির মুখোমুখি হয়েছি। ম্যাভেন নির্ভরতাগুলি মেলে না issue সমস্যা সমাধানের জন্য আমি নীচের নির্ভরশীলতার সাথে আমার Pom.xML আপডেট করেছি।

http://maven.apache.org/xsd/maven-4.0.0.xsd "> 4.0.0 com.netapp.junitnmactiop अभ्यास জুনিটএন্ডম্যাকটিওস অনুশীলন 0.0.1-এসএনএপশট

<properties>
    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
    <java.version>1.8</java.version>
    <junit.jupiter.version>5.1.1</junit.jupiter.version>
    <junit.platform.version>1.1.1</junit.platform.version>
</properties>

<build>
    <plugins>
        <plugin>
            <artifactId>maven-compiler-plugin</artifactId>
            <version>3.1</version>
            <configuration>
                <source>${java.version}</source>
                <target>${java.version}</target>
            </configuration>
        </plugin>
    </plugins>
</build>

<dependencies>
    <dependency>
        <groupId>org.junit.jupiter</groupId>
        <artifactId>junit-jupiter-engine</artifactId>
        <version>${junit.jupiter.version}</version>
    </dependency>
    <dependency>
        <groupId>org.junit.platform</groupId>
        <artifactId>junit-platform-runner</artifactId>
        <version>${junit.platform.version}</version>
        <scope>test</scope>
    </dependency>
</dependencies>



1

আপনি শুধুমাত্র ব্যবহার করতে পারেন junit-jupiterপরিবর্তে একটি পরীক্ষা নির্ভরতা যেমন junit-jupiter-api, junit-platform-launcher, junit-jupiter-engine

<dependency>
    <groupId>org.junit.jupiter</groupId>
    <artifactId>junit-jupiter</artifactId>
    <version>5.5.2</version>
    <scope>test</scope>
</dependency>

4
এই সমাধানটি আমার জন্য কাজ করেছে জুনট 5.6.2, জাভা 11 (এবং 2020-03 / 4.15.0 গ্রহন)
কোসোস

1

আমার জন্য, আমি JUnit 5 লাইব্রেরি যুক্ত করতে এবং নির্ভরতা যুক্ত করে বিল্ড পাথটি কনফিগার করেছি

     <dependency> 
        <groupId>org.junit.platform</groupId> 
        <artifactId>junit-platform-launcher</artifactId> 
        <version>1.1.0</version> 
        <scope>test</scope> 
     </dependency>

পৃথকভাবে।


1

আমি Eclipse (সংস্করণ: 2019-12 (4.14.0)) এর সাথেও এই সমস্যার মুখোমুখি হয়েছি। সমাধানটি ইন্টেলিজ ব্যবহার করতে হবে বা গ্রহনটিতে এই জাতীয় পরীক্ষা চালানোর জন্য ম্যাভেন পরীক্ষাটি ব্যবহার করবে বলে মনে হচ্ছে।



1

আমি আসলে স্প্রিং-টুল-স্যুট -4-4.5.1 ব্যবহার করেছি এবং যখন আমি একটি পরীক্ষা ক্লাস চালাতে চাই তখন আমার এই বাগটি ছিল। এবং সমাধানটি ছিল লাইব্রেরিতে 'জাভা বিল্ড পাথ', 'জুনিট 5' এ যুক্ত করা

এখানে চিত্র বর্ণনা লিখুন


0

আপনার পরিবর্তন করা উচিত

@Test
public static void testmethod(){}

প্রতি

@Test
public void testmethod(){}

@ টেস্টটি অসমর্থিত স্ট্যাটিক পদ্ধতি


0

আমি একই ত্রুটির মধ্যে দৌড়েছি এবং আমার ক্ষেত্রে এটি প্রকল্পে যাওয়া Project Properties > Maven > Update projectএবং / অথবা পরিষ্কার করা এবং পুনর্নির্মাণের সাধারণ বিষয় ছিল ।


0

সবেমাত্র আমার টেস্টক্লাসটি গ্রহন মেনুর মাধ্যমে যুক্ত করে কাজ করেছেন। প্রজেক্টে ডান ক্লিক করুন -> নতুন -> অন্যান্য -> জুনিট -> জুনিত পরীক্ষার কেস


0

এটি জুনিট-প্ল্যাটফর্ম-লঞ্চার / জুনিট-প্ল্যাটফর্ম-রানার সংস্করণের কারণে হতে পারে।

1.1.0 কাজ করে না

1.4.1 আমার সেটআপে কাজ করে।

আমি মনে করি এটি গ্রহনে একটি ত্রুটি কারণ এটি জুনিটের উচ্চতর সংস্করণ গ্রন্থাগারগুলির সাথে কাজ করছে এবং অন্যান্য সংস্করণ নয়।

এটি আমার সমস্যা সমাধান করেছে। অন্য রেজোলিউশনটি আমার কাছে কম সম্ভাব্য বা ঝুঁকিপূর্ণ বলে মনে হয়েছিল। ধন্যবাদ

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