سؤال

وأنا أحاول أن تشغيل الاختبارات عينة التي تأتي مع junit4.7 وجود بعض الصعوبة.

وjava يحترم بلدي CLASSPATH:

me@dinosaurhunter ~/Desktop> export CLASSPATH=
me@dinosaurhunter ~/Desktop> echo $CLASSPATH

me@dinosaurhunter ~/Desktop> java junit.textui.TestRunner junit.samples.AllTests
Exception in thread "main" java.lang.NoClassDefFoundError: junit/textui/TestRunner
me@dinosaurhunter ~/Desktop> source /etc/profile 
me@dinosaurhunter ~/Desktop> echo $CLASSPATH
:/Library/Java/Extensions/junit/:/Library/Java/Extensions/junit/junit.jar
me@dinosaurhunter ~/Desktop> java junit.textui.TestRunner junit.samples.AllTests
Exception in thread "main" java.lang.NoClassDefFoundError: junit/framework/Test
    at java.lang.Class.forName0(Native Method)
    at java.lang.Class.forName(Class.java:164)
    at junit.runner.BaseTestRunner.loadSuiteClass(BaseTestRunner.java:207)
    at junit.runner.BaseTestRunner.getTest(BaseTestRunner.java:100)
    at junit.textui.TestRunner.start(TestRunner.java:179)
    at junit.textui.TestRunner.main(TestRunner.java:138)

ولكن كما ترون، فمن غير قادر على العثور junit/framework/Test ... نظرت في /Library/Java/Extensions/junit/junit.jar ويتم تضمينه، وإن كان.

و/Library/Java/Extensions/junit/junit.jar هو الارتباط الرمزي. غير أن ما يرام؟

هل كانت مفيدة؟

المحلول

ومحاولة وضع ملف أداة JUnit JAR مباشرة إلى الدليل الإضافات بدلا من إنشاء دليل فرعي لذلك. أنا فقط نسخ أداة JUnit-4.6.jar إلى الدليل / المكتبة / جافا / Extenstions وتنفيذ الطبقة TestRunner مع أي قضايا

% java junit.textui.TestRunner
Usage: TestRunner [-wait] testCaseName, where name is the name of the TestCase class

وحذف مكتبة من نتائج دليل ملحقات في الاستثناء المتوقع

Exception in thread "main" java.lang.NoClassDefFoundError: junit/textui/TestRunner

نصائح أخرى

وطيب، أنا فقط تحميل أداة JUnit 4.7، تفكيك ملف مضغوط، وتغيير الدليل إلى المجلد وركض الأمر التالي بنجاح:

$ java -cp .:junit-4.7.jar junit.textui.TestRunner junit.samples.AllTests 
.........................................
.........................................
.........................................
.......
Time: 3.255

OK (130 tests)

وكان ذلك على OSX.

وأعتقد أنه في المثال الخاص بك، CLASSPATH الخاص بك قليلا عابث. جرب هذا:

.:/Library/Java/Extensions/junit:/Library/Java/Extensions/junit/junit.jar

وانظر الخلافات؟ أضفت . (الدليل الحالي) وأزلت مائل زائدة من الدليل أداة JUnit.

وUPDATE: أنا اختبرت فقط مع الارتباط الرمزي والذي يظهر للعمل أيضا:

$ ln -s junit-4.7.jar junit.jar
$ java -cp .:junit.jar junit.textui.TestRunner junit.samples.AllTests 
.........................................
.........................................
.........................................
.......
Time: 2.569

OK (130 tests)

هل بناء JAR نفسك؟ هذا يبدو وكأنه هو مبني على JAR دون شرح.

إذا تجميع أداة JUnit مع

  javac -proc none ...

وسوف تحصل على هذا الخطأ.

وبعض الأشياء للتحقيق:

هل الملف junit.jar في الموقع الذي تحدده، وهل هو قابل للقراءة؟ وCLASSPATH تصديرها عن طريق / الخ / ملف؟ هل يعمل عند تعيين "-cp $ CLASSPATH" بدلا من ذلك على سطر الأوامر؟ حاول إزالة القولون الرائدة في classpath - لا ينبغي أن يكون هناك

ومن الممكن أن استخدام الارتباط الرمزي الذي يسبب المشكلة. محاولة إضافة جرة أن الرمزي يشير إلى وحاول مرة أخرى.

ولكن النظر في في جافا الصفحة رجل ل Mac OS X هناك لا يبدو أن يكون مثل هذا التقييد.

scroll top