簡體   English   中英

從命令行運行Junit測試

[英]Running Junit test from command line

因此,我編寫了一個名為Item的類,並使用Junit編寫了一個名為ItemTest的測試,我想從命令行執行測試。 這是我遵循的步驟:

  1. 設置路徑以運行java.exe並將類路徑設置為庫

     ...> set path="C:\\Program Files (x86)\\Java\\jdk1.7.0_40\\bin" ...> set classpath=C:\\Program Files (x86)\\Java\\hamcrest-core-1.3.jar; C:\\Program Files (x86)\\Java\\junit-4.11.jar 
  2. 然后我只需運行org.junit.runner.JUnitCore來查看是否在類路徑中添加了庫

     ...>java org.junit.runner.JUnitCore 

    輸出是

     JUnit version 4.11 Time: 0,001 OK (0 tests) 
  3. 然后我編譯沒有錯誤的ItemItemTest

     C:\\Users\\User\\IdeaProjects\\My_project\\src>javac .\\main\\java\\Item.java .\\test\\java\\ItemTest.java 
  4. 然后嘗試ro運行此類

     C:\\Users\\User\\IdeaProjects\\My_project\\src>java org.junit.runner.JUnitCore main.java.Item test.java.ItemTest 
  5. 最后我得到了

     JUnit version 4.11 Exception in thread "main" java.lang.NoClassDefFoundError: main/java/Item (wrong name: Item) at java.lang.ClassLoader.defineClass1(Native Method) at java.lang.ClassLoader.defineClass(ClassLoader.java:792) at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:14 2) at java.net.URLClassLoader.defineClass(URLClassLoader.java:449) at java.net.URLClassLoader.access$100(URLClassLoader.java:71) at java.net.URLClassLoader$1.run(URLClassLoader.java:361) 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:424) at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:308) at java.lang.ClassLoader.loadClass(ClassLoader.java:357) at java.lang.Class.forName0(Native Method) at java.lang.Class.forName(Class.java:190) at org.junit.runner.JUnitCore.runMain(JUnitCore.java:86) at org.junit.runner.JUnitCore.runMainAndExit(JUnitCore.java:47) at org.junit.runner.JUnitCore.main(JUnitCore.java:40) 

    如何解決呢? 我應該將Item放在classpath中嗎?

UPD#1

將此路徑放在我的類路徑中不起作用(使用和不使用src ):

    C:\Users\User\IdeaProjects\My_project\src> 

UPD#2

當我想上課時,我想找他,因為他存儲在文件系統中或放置在什么包中? 因為我沒有軟件包,所以My_project除了是項目名外,還包括模塊名。

解決了

這是方法-我將以下路徑添加到classpath中:

  1. Item的路徑:

     C:\\Users\\User\\IdeaProjects\\My_project\\src\\main\\java\\; 
  2. 測試類ItemTest的路徑:

     C:\\Users\\User\\IdeaProjects\\My_project\\src\\test\\java\\; 
  3. 然后只需運行:

     ...>java org.junit.runner.JUnitCore ItemTest 

您必須將.class文件的位置放在類路徑中。 即使您位於同一文件夾中,如果它們不在類路徑中,也不會找到它們。 那是來自DOS x...。

在DOS中,操作系統首先在當前文件夾中查找。 操作系統在其他任何地方都首先在路徑(或Java的類路徑)中查找。

如果Item在com.example.Item包中,並且類在c:\\ users \\ test \\ myproj \\ target \\ com \\ example \\ Item.class中,則必須將c:\\ users \\ test \\ myproj \\ target \\添加到類路徑

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM