أداة JUnit وجافا مشاكل CLASSPATH - OS X
سؤال
وأنا أحاول أن تشغيل الاختبارات عينة التي تأتي مع 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 هناك لا يبدو أن يكون مثل هذا التقييد.