JUnit পরীক্ষা চলাকালীন শ্রেণি ব্যতিক্রম পাওয়া যায় নি


117

Eclipse এ JUnit পরীক্ষা চলাকালীন আমি এই ত্রুটিটি পাচ্ছি:

Class not found com.myproject.server.MyTest
java.lang.ClassNotFoundException: com.myproject.server.MyTest
    at java.net.URLClassLoader$1.run(URLClassLoader.java:366)
    at java.net.URLClassLoader$1.run(URLClassLoader.java:355)
    at java.security.AccessController.doPrivileged(Native Method)
    at java.net.URLClassLoader.findClass(URLClassLoader.java:354)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:423)
    at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:308)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:356)
    at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.loadClass(RemoteTestRunner.java:693)
    at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.loadClasses(RemoteTestRunner.java:429)
    at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:452)
    at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:683)
    at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.run(RemoteTestRunner.java:390)

আমি JUnitক্লাবপথে লাইব্রেরি যুক্ত করার চেষ্টা করেছি যদিও আমি maven ব্যবহার করছি, এবং JUnit গ্রন্থাগারটি POM নির্ভরতা মধ্যে রয়েছে।

আমি ইতিমধ্যে প্রকল্পটি সাফ করার চেষ্টা করেছি এবং ELipse এর জন্য JUnit প্লাগইন ব্যবহার করে একটি নতুন JUnit পরীক্ষা কেস তৈরি করেছি, এখনও একই ত্রুটি পেয়েছি।


10
mvn clean testএকবার চালানোর চেষ্টা করুন এটি সমস্ত পরীক্ষার ক্লাসগুলি সংকলন করবে
জিগার জোশী

1
আপনি কি দয়া করে পরীক্ষা করতে পারেন com.myproject.server.MyTest বিন ফোল্ডারে আছে? আমি বোঝাতে চাইছি যদি এটি সংকলন বা নির্মাণের পথে ত্রুটির কারণে সংকলিত না হয় তবে আপনি এই ত্রুটিটি পাবেন get
বিকাস

আপনি একটি ক্লাস বা পুরো প্রকল্প পরীক্ষা করছেন?
ডসজি 89


1
আমার ক্ষেত্রে ম্যাভেন ব্যবহার করে পরীক্ষা চালানো কাজ করেছে, তবে আমি যদি কোনও পরীক্ষার ক্লাসে ডান ক্লিক করি এবং এটি রান করুন -> জুনিট পরীক্ষা হিসাবে বেছে নিই, তবে এটি ক্লাসনটফাউন্ডএক্সেপশন রিপোর্ট করেছে reported আমি প্রকল্পটিতে ডান ক্লিক করে এবং সম্পত্তি ->
বিল্ডারগুলিতে

উত্তর:


120

এটি দেখা যাচ্ছে কারণ আপনি ব্যবহার করার সময় কেবল উত্স কোডটি সংকলন করছে mvn clean compile(আমি মেভেন ৩.১.০ ব্যবহার করছি তাই এটি সর্বদা এরূপ আচরণ করে কিনা তা আমি নিশ্চিত নই)।

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


1
আমার একবার এটি ঘটেছিল এবং স্লোমেকের উত্তর কাজ করে এবং তারপরে আবার একই ত্রুটি ঘটেছিল তাই আমাকেও এটি চেষ্টা করে দেখতে হয়েছিল। এটি এখন আবার ঠিকঠাক হয়ে যায়, তাই নিরাপদ থাকতে আপনি এই দুটি জিনিসই করতে চাইতে পারেন।
রোজার

ধন্যবাদ, এটি আমার জন্য কাজ করেছে। তবে আমার ক্ষেত্রে এটি নিকটবর্তী হওয়া পর্যন্ত কাজ করে নি এবং প্রকল্পটি গ্রহণের জন্য পুনরায় খোলায়।
পরমেশ কোরাকাকুতি

সহজ কথায় একটি 'এমভিএন ক্লিন টেস্ট-সংকলন' করুন এবং তারপরে আপনার জুনিট পরীক্ষা গ্রহণের জন্য গ্রহন করুন। এটা আমার জন্য কাজ করেছে। ধন্যবাদ।
শ্রীরাম

103

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


1
ধন্যবাদ এটি আমার সমস্যার সমাধান করেছে। আসল পরীক্ষাটি ক্লাসটি চালানোর চেষ্টা করার সময় ত্রুটি পাওয়া যায় নি। আমি মনে করি অতিরিক্ত এমভিএন বিল্ড লক্ষ্যমাত্রা যুক্ত করার আগে এটি সম্ভবত একটি পছন্দসই প্রথম পদক্ষেপ।
রজার

8
এই পোস্টটির স্ক্রিনশটগুলি সহ এই পদ্ধতিটি বর্ণিত হয়েছে (যদি উপরে @ স্লোমেকের উত্তর থেকে পদক্ষেপগুলি পরিষ্কার না হয়)
nhylated

2
আমি এক্লিপস মঙ্গল ২ তে জেআরআই সিস্টেম লাইব্রেরির উপরে মাভেন পরিচালিত নির্ভরতা স্থানান্তর করতে পারিনি, তবে আমি প্রকল্পটিতে ডান ক্লিক করতে এবং সম্পত্তি -> বিল্ডারগুলিতে যেতে পারলাম এবং তারপরে মাভেন প্রজেক্ট বিল্ডারটিকে জাভা বিল্ডারের উপরে সরিয়ে দিতে পারি এবং এটি আমার পক্ষে কাজ করে।
xorcus

আমি উপরের সমস্ত চেষ্টা করেছিলাম এবং এটি কার্যকর হয়নি, আমি জেআরই সিস্টেম লাইব্রেরি সম্পর্কে মাভেন নির্ভরতাও সরাতে পারি না তবে এটি লাইব্রেরি ট্যাবের অধীনে ছিল। তারপরে আমি জেআরই সিস্টেম লাইব্রেরির উপরে মাভেন নির্ভরতা স্থানান্তর করতে সক্ষম হিসাবে -> অর্ডার ও রফতানি -> তৈরির পথে গিয়েছিলাম। তারপরে আমি প্রকল্পটি তৈরি করেছি এবং একটি মাভেন ইনস্টল চালিয়েছি, তারপরে পরীক্ষাটি সফলতার সাথে চলে।
মেগান

22

আমি একই সমস্যার মুখোমুখি হয়েছি এবং আমি @ স্লোমেকের উত্তরটি ব্যবহার করে এটি ঠিক করতে সক্ষম হয়েছি তবে এর পরে বিষয়টি আবার উত্থিত হয়েছে ।

JUnit পরীক্ষার রান কনফিগারেশনে আমার প্রকল্পের আউটপুট ফোল্ডার যুক্ত করে অবশেষে আমি এটি ঠিক করেছি। পদক্ষেপগুলি হ'ল:

  • এ থেকে আপনার প্রকল্পের আউটপুট ফোল্ডারটি সন্ধান করুন Project properties -> Java Build Path -> Default output folder
    • সাধারণত এটি হয় <project-folder>/bin
  • যাও Run -> Run Configurations...
  • ইউনিট পরীক্ষার রান কনফিগারেশনে ক্লিক করুন এবং Classpathট্যাবে ক্লিক করুন
  • আপনার প্রকল্পের আউটপুট ফোল্ডারটি স্পষ্টত অন্তর্ভুক্ত করুন User Entries- যদিও প্রকল্পটি ইতিমধ্যে সেখানে অন্তর্ভুক্ত রয়েছে
    • Advanced -> Add folderআউটপুট ফোল্ডার যুক্ত করতে ক্লিক করুন

এই সমস্যাটি Eclipse এ অদ্ভুত প্রকল্প সেটআপের কারণে হতে পারে - যেমন একক প্রকল্প / ফোল্ডার হিসাবে আমদানিকৃত নেস্টেড মাভেন প্রকল্পগুলির উত্স ফোল্ডার (কমপক্ষে এটি আমার প্রকল্পটি কীভাবে সেটআপ হয়েছিল)।


তোমাকে অনেক ধন্যবাদ; আমার এই সমস্যা ছিল আপনার ফিক্স আমার জন্য কাজ করে; শীর্ষ দুজন তা করেননি। আপ-ভোট দিয়েছে।
ডেভটম

একদম অসাধারণ! এই জন্য যুগে যুগে আমার মাথা আঁচড়ান। ধন্যবাদ!
রায়চ্যাহ

17

যদি এই সমস্যাটি কেবলমাত্র Eclipse এ ঘটে তবে নির্বাচিত প্রকল্পে প্রকল্পটি>> ক্লিন ... নির্বাহ করা কার্যকর হতে পারে।


ধন্যবাদ - এটি আসলে আমার জন্য কাজ করেছে
জাভা

11

কোনও উন্নতি না করে এখানে সবকিছু চেষ্টা করার পরে, আমি কেবল Eclipse পুনরায় চালু করে আমার সমস্যাটি সমাধান করেছি


5

আমি ম্যাভেন আপডেট চালিয়ে আমার সমস্যাটি স্থির করেছি। আপনার প্রকল্প> ম্যাভেন> আপডেট প্রকল্পটি রাইট ক্লিক করুন


3

আমার ক্ষেত্রে আমার একটি ভুল মাভেন ডিরেক্টরি কাঠামো ছিল।

যা মত হওয়া উচিত:

/ src / test / java / com.myproject.server.MyTest

আমি এটি স্থির করার পরে - সবকিছু একটি কবজির মতো কাজ করেছিল।


2

আমার ক্ষেত্রে, কেবল পরবর্তী পদক্ষেপই আমাকে এই সমস্যাটি সমাধান করতে সহায়তা করেছে:

  1. প্রকল্প-> বৈশিষ্ট্য-> রান / ডিবাগ সেটিংস।
  2. "..... '" এর জন্য কনফিগারেশন চালু করুন শ্রেণি / প্রকল্প নির্বাচন করুন
  3. সম্পাদনা করুন -> শ্রেণিপথ -> "ডিফল্ট এন্ট্রি পুনরুদ্ধার করুন"

ধন্যবাদ !! এই একজনই আমাকে সাহায্য করেছেন !!
সুমনদাস

1

এর আগে, এই ক্ষেত্রে, আমি সর্বদা mvn করেছিলাম eclipse:eclipseএবং আমার Eclipse পুনরায় শুরু করতাম এবং এটি কাজ করে। জিআইটিতে স্থানান্তরিত হওয়ার পরে, এটি আমার পক্ষে কাজ করা বন্ধ করে দিয়েছে যা কিছুটা অদ্ভুত।

এখানে মৌলিক সমস্যা হ'ল মিঃ অ্যাকলিপস সংকলিত ক্লাসটি খুঁজে পান না। তারপরে, আমি আউটপুট ফোল্ডারটিকে প্রজেক্ট / টার্গেট / টেস্ট-ক্লাস হিসাবে সেট করেছি যা ডিফল্টরূপে উত্পন্ন হয় mvn clean installযা পরীক্ষার এড়ানো ছাড়াই এবং নিম্নলিখিত কাজগুলি নিয়ে এগিয়ে যায়:

বিকল্প 1: প্রতিটি পরীক্ষার ক্ষেত্রে শ্রেণিপথ সেট করুন

গ্রহণ -> রান -> রান কনফিগারেশন -> জুনিট-> মাইস্টেস্ট নির্বাচন করুন -> শ্রেণিপথ ট্যাবের অধীনে-> ব্যবহারকারীর এন্ট্রি নির্বাচন করুন-> উন্নত-> ফোল্ডার যুক্ত করুন -> নির্বাচন করুন -> প্রয়োগ করুন -> রান

বিকল্প 2: ক্লাসপাথ ভেরিয়েবল তৈরি করুন এবং এটি সমস্ত পরীক্ষার ক্ষেত্রে ক্লাসপাথে অন্তর্ভুক্ত করুন

গ্রহণ -> উইন্ডোজ -> ক্লাসপাথ চলক -> নতুন -> [নাম: জুনিট_স্টেস্ট_সেস_সিপি | পাথ:] -> ঠিক আছে তারপরে Eclipse-> Run -> রান কনফিগারেশনগুলিতে যান -> JUnit-> মাইস্টেস্ট নির্বাচন করুন -> শ্রেণিপথ ট্যাবের অধীনে -> ব্যবহারকারীদের নির্বাচন করুন-> উন্নত-> শ্রেণিপথের ভেরিয়েবলগুলি নির্বাচন করুন-> জুনিট_টেষ্ট_সেসেস_সিপি-> নির্বাচন করুন- > Apply-> চালু করুন

অনলাইনে সমস্ত পরামর্শ চেষ্টা করার পরে এটি এখন কেবলমাত্র আমার জন্য কাজ করছে।


1

দুটি উত্স ডিরেক্টরি সহ একটি পরীক্ষার সোর্সসেট সহ গ্রেডেল প্রকল্পে আমার একই সমস্যা ছিল।

এই স্নিপেট একটি মূল-মডিউল.gradle থেকে আসে এবং পরীক্ষার উত্সে একটি সংস্থান দির যোগ করে:

sourceSets {
    test {
        resources {
            srcDir('../other-module/src/test/resources')
        }
    }
}

এটি করার সাথে সাথে আমার প্রকল্পের মূল-মডিউলটির উত্সসেট সম্পর্কিত দুটি রিসোর্স ডিরেক্টরি ছিল:

../other-module/src/test/resferences এসআরসি / পরীক্ষা / সংস্থানসমূহ (জাভা প্লাগইন দ্বারা স্বয়ংক্রিয়ভাবে যোগ হওয়া মূল-মডিউল ফোল্ডারের সাথে সম্পর্কিত)

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


1

NoClassDefFoundError এর অর্থ আসলে এটি ক্লাসটি আরম্ভ করতে পারে না। এটা আছে কিছুই বর্গ খোঁজার সঙ্গে কাজ করতে। নাল স্ট্রিংয়ে ট্রিম () কল করার সময় আমি এই ত্রুটিটি পেয়েছি।

JUnit নালপয়েন্টারএক্সসেপশন প্রদর্শন করবে না। স্ট্রিংটি স্বাভাবিকভাবে চলাকালীন নাল নয় কারণ আমি কোনও প্রোপার্টি ফাইল থেকে স্ট্রিং আনছি যা পরীক্ষার জন্য উপলব্ধ নয়।

আমার পরামর্শ হ'ল ক্লাস থেকে টুকরো টুকরো অপসারণ করা যতক্ষণ না আপনার পরীক্ষাগুলি পাস করা শুরু না করে। তারপরে আপনি কোন লাইনটি ত্রুটি দিচ্ছেন তা নির্ধারণ করতে পারেন।


0

আমার একিলিপস হেলিওসের সাথে আমারও একই সমস্যা ছিল যা জুনিটকে ডিবাগ করে। আমার সমস্যা কিছুটা আলাদা ছিল কারণ আমি জুনিটসকে সফলভাবে চালাতে পেরেছিলাম কিন্তু যখন একই জুনিয়াইটগুলি ডিবাগ করার সময় আমি ক্লাসনটফাউন্ডএক্সপশন পেয়েছিলাম।

আমি স্ট্যাকওভারফ্লো.কম এবং অন্যত্র ফোরামগুলিতে উপলব্ধ বিভিন্ন ধরণের সমাধানের চেষ্টা করেছি, তবে কিছুই কার্যকর হয়নি বলে মনে হচ্ছে। এই সমস্যাটি নিয়ে আমার মাথায় প্রায় দু'দিন ঘুরানোর পরে অবশেষে আমি এর সমাধানটি বের করেছিলাম।

সমাধানগুলির কোনওটি যদি কাজ না করে বলে মনে হয় তবে কেবল আপনার ওয়ার্কস্পেসে তৈরি .Madadata ফোল্ডারটি মুছুন। এটি প্রকল্পগুলি এবং আপনার দ্বারা তৈরি সমস্ত ধরণের কনফিগারেশন আমদানির অতিরিক্ত ওভারহেড তৈরি করবে, তবে এগুলি অবশ্যই এই সমস্যাটি সমাধান করবে।

আশা করি এগুলি সাহায্য করবে।


একটি নোট হিসাবে ... এটি করার জন্য আপনার পরিবেশটি পুনর্নির্মাণ করা প্রয়োজন। সুতরাং যখন সমাধানটি সমাধান করতে পারে তখন আপনি কী করতে
বব

0

এই পদক্ষেপগুলি আমার পক্ষে কাজ করেছিল।

  • স্থানীয় মাভেন সংগ্রহস্থলের সামগ্রী মুছুন।
  • কমান্ড লাইনে এমভিএন ক্লিন ইনস্টল চালান । (পম ডিরেক্টরিতে সিডি)।
  • Eclipse এ প্রকল্প তৈরি করুন।

0

1- এমভিএন গ্রহন: গ্রহন

2- প্রকল্প সমস্ত প্রকল্প পরিষ্কার

3- পুনরায় আরম্ভ করুন


0

এটি অন্য একটি উত্তর হিসাবে উল্লেখ করার মতো যে আপনি যদি ইজিট ব্যবহার করছেন, এবং ক্লোভারের মতো ক্লোভারের মতো একটি পরীক্ষা কভারেজ সরঞ্জাম বলার কারণে আপনার ক্লাসপথটি আপডেট হয়ে যায় তবে কখনও কখনও এমন একটি ক্লিনআপ হিচাপ থাকে যা সম্পূর্ণরূপে সামগ্রীগুলি মুছে দেয় না /path/to/git/repository/<project name>/bin/

মূলত, আমি Eclipse এর ত্রুটি লগ ভিউ ব্যবহার করেছিলাম, এই ক্লিনআপ প্রচেষ্টা চলাকালীন সমস্যাগুলির কারণ কী ছিল তা সনাক্ত করে, উত্স ডিরেক্টরিতে নেভিগেট করে, এবং নিজেই <project name>/binডিরেক্টরিটি মুছে ফেলেছিলাম deleted এটি শেষ হয়ে গেলে আমি পুনরায় Eclipse এ গিয়ে F5আমার প্রকল্পটি রিফ্রেশ করেছিলাম ( ) এবং ত্রুটিটি চলে যায়।


0

আপনার প্রকল্পটি কেবল নিয়মিত জাভা প্রকল্প নয়, কোনও মাভেন প্রকল্প হিসাবে খোলার আছে কিনা তা পরীক্ষা করে দেখুন। আসলে কোনও মস্তিষ্কবিহীন, তবে ঠিক এটি কারণ হ'ল আপনি এটি মিস করতে পারেন।


0

এটি "[ERROR] এর কারণেও হতে পারে] এই পরিবেশে কোনও সংকলক সরবরাহ করা হয়নি Perhaps সম্ভবত আপনি জেডিকে না দিয়ে কোনও জেআরইতে চলছে?"


0

আমি একই সমস্যা ছিল। আমি এটি বহিরাগত ইন্টারনেট থেকে ডাউনলোডের মাধ্যমে যুক্ত করেছিলাম এমন বাহ্যিক JUnit জার নির্ভরতা সরিয়ে এটি সমাধান করেছি। তবে আমি প্রোজেক্ট-> বৈশিষ্ট্যগুলিতে> নির্মাণের পথে-> লাইব্রেরি যুক্ত>> জুনিট-> সংস্করণটি বেছে নিয়েছি (প্রাক্তন জুনিট 4) -> প্রয়োগ করুন।

এটি স্বয়ংক্রিয়ভাবে নির্ভরতা যুক্ত করেছে। এটা আমার সমস্যা সমাধান।


0

কিছু ছদ্মবেশী পরিবর্তন করা এবং পরীক্ষার শ্রেণি সংরক্ষণ করা সমস্যার সমাধান করতে পারে। এটি স্বয়ংক্রিয়ভাবে। ক্লাস তৈরি করবে


0

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


0

প্রকল্পের জন্য যা ম্যাভেন ব্যবহার করে না: এটি আমার জন্য কাজ করেছে https://ihategeek.wordpress.com/2012/04/18/eclipse- জুনit-test-class-not-found/

অর্ডারে নীচে জেয়ার এবং প্রকল্পের এসসিআর যুক্ত করা এবং বিল্ড পাথে রফতানি করা


0

আপনি নির্ভরতা হিসাবে জুনিট 4 যোগ করেছেন কিনা তা দয়া করে পরীক্ষা করে দেখুন।

যেমন

<dependency>
    <groupId>junit</groupId>
    <artifactId>junit</artifactId>
    <version>4.11</version>
    <scope>test</scope>
</dependency>

-5

আপনি কী ভুলে যাবেন মেইন ক্লাস এবং টেস্ট কেস ক্লাসটি / এসসিআর / টেস্ট / জাভাতে রাখতে? একবার এটি পরীক্ষা করে দেখুন।


1
java.lang.ClassNotFoundException আসে যখন ক্লাসটি ইতিমধ্যে সংকলিত হয় তবে ক্লাসপথ সঠিকভাবে সেট না করার কারণে রান টাইমে থাকে।
নীতিন মহেশ
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.