2012-07-17 58 views
0

我剛開始使用JUnit。我跑我的測試通過Intelij想法,它是一切正常,但當我試圖用這個代碼來運行我的測試中終端:在終端中運行我的Junit測試

java -cp /junit4.10/junit-4.10.jar:. /Users/maidini/IdeaProjects/HelloWorld/test/CalculatePriceTest.java 

我收到此錯誤:

Exception in thread "main" java.lang.NoClassDefFoundError: /Users/maidini/IdeaProjects/HelloWorld/test/CalculatePriceTest/java 
Caused by: java.lang.ClassNotFoundException: .Users.maidini.IdeaProjects.HelloWorld.test.CalculatePriceTest.java 
    at java.net.URLClassLoader$1.run(URLClassLoader.java:202) 
    at java.security.AccessController.doPrivileged(Native Method) 
    at java.net.URLClassLoader.findClass(URLClassLoader.java:190) 
    at java.lang.ClassLoader.loadClass(ClassLoader.java:306) 
    at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:301) 
    at java.lang.ClassLoader.loadClass(ClassLoader.java:247) 

你有什麼想法應該怎麼做才能在終端上成功運行我的測試?我也在使用Mac Lion。

回答

4

您首先必須使用javac編譯您的代碼;在您的類路徑中加載.java源文件不起作用。記住要添加你的單元測試類和你正在測試的實際類。以及他們可能擁有的任何依賴關係。也許你會想將它們捆綁在.jar文件中,所以你的命令行不會太長。另外,每次更改代碼或測試時都不要忘記重新編譯。

這可以很快得到毛茸茸的。相反,我建議您使用構建工具,如Maven。使用適當的Maven構建,您只需鍵入mvn test,Maven將處理依賴項,編譯併爲您運行測試。

如果您不想使用Maven,您還可以查看Ant(最好與Ivy)或Gradle或任何其他Java構建工具。

+0

我已經編譯了類,它很好,但仍然得到了同樣的錯誤 – MaryamAyd 2012-07-17 09:37:05

+0

同意使用Maven(或任何其他構建工具)。 @MaryamAyd,你確定你知道你在用你的命令做什麼嗎?你正在運行你的類作爲一個Java應用程序,但不運行任何單元測試 – 2012-07-17 09:37:45

+0

@MaryamAyd你也應該參考你想執行的類,而不是它定義的文件。所以如果你的類居住在包'com.maryamayd ',你應該在命令行上放置'com.maryamayd.CalculatePriceTest'而不是'/ Users/maidini/IdeaProjects/HelloWorld/test/CalculatePriceTest.java'。雖然這可能不起作用,因爲它沒有「主要」方法。請使用適當的構建工具。 – jqno 2012-07-17 09:41:47