簡體   English   中英

無法從命令行運行JUnit測試用例

[英]Can't run JUnit test cases from the command line

我正在嘗試從命令行(Windows 10中的PowerShell)運行測試。 在問這個問題之前,我瀏覽了多個資源並閱讀了許多主題,例如

但是當我嘗試像JUnit Wiki中那樣從PowerShell運行測試時

cd E:\Dev\AutoTest\Example
java -cp .;/libs/junit-4.12.jar;/libs/hamcrest-core-1.3.jar org.junit.runner.JUnitCore tests.Booking.BookingTests

我得到了輸出

CommandNotFoundException


如果我運行相同的命令,但通過舊命令行( cmd.exe ):

cd E:\Dev\AutoTest\Example
java -cp .;E:\Dev\AutoTest\Example\libs\junit-4.12.jar;E:\Dev\AutoTest\Example\libs\hamcrest-core-1.3.jar org.junit.runner.JUnitCore tests.Booking.BookingTests

我得到了輸出

java.lang.IllegalArgumentException: Could not find class [tests.Booking.BookingTests]  
    Caused by: java.lang.ClassNotFoundException: tests.Booking.BookingTests

在IDEA中,項目結構如下所示:

IDEA項目結構

在硬盤驅動器上,結構如下所示:

硬盤項目結構

•“ out”文件夾包含* .class文件

•“ src”文件夾包含* .java文件


問題:

如何使用我的結構從PowerShell中的命令行運行JUnit測試用例?

在PowerShell中,分號是命令分隔符(允許您將兩個語句放在一行上),因此您正在運行java -cp . (應該輸出命令幫助),然后是/libs/junit-4.12.jar (不能識別為命令)。 JUnit Wiki中的示例顯然不是針對PowerShell的,而是針對CMD的,因為CMD使用與號( & )來鏈接命令,因此該問題不會在此處發生。

同樣,您將類路徑中的路徑/libs/junit-4.12.jar絕對( /libs/junit-4.12.jar ),但您的libs目錄位於項目文件夾中。 這就是為什么java抱怨找不到org.junit.runner.JUnitCore類。 從項目目錄的根目錄運行JUnit時,需要創建相對於該位置的路徑。

並且由於將代碼編譯到另一個文件夾( .\\out\\production\\Afl_AutoTest ),因此必須將該文件夾也添加到類路徑中,否則JUnit將無法找到已編譯的類(因為它們在類路徑之外) )。

將您的類路徑放在引號中,添加輸出目錄,並從庫路徑中刪除前導斜杠,並且該命令應在CMD和PowerShell中均適用:

java -cp ".;out/production/Afl_AutoTest;libs/junit-4.12.jar;libs/hamcrest-core-1.3.jar" org.junit.runner.JUnitCore tests.Booking.BookingTests

更妙的是,定義所有參數作為一個數組和圖示吧:

$classpath = '.',
             'out/production/Afl_AutoTest',
             'libs/junit-4.12.jar',
             'libs/hamcrest-core-1.3.jar'
$params    = '-cp', ($classpath -join ';'),
             'org.junit.runner.JUnitCore',
             'tests.Booking.BookingTests'

java @params

不過,后者僅在PowerShell中有效。

最終命令必須包含所有“ libs”文件夾文件:

•java-client-4.1.2.jar

•junit-4.12.jar

•selenium-server-standalone-3.4.0.jar

•hamcrest-core-1.3.jar

java -cp ".;out/production/Afl_AutoTest;libs/java-client-4.1.2.jar;libs/junit-4.12.jar;libs/selenium-server-standalone-3.4.0.jar;libs/hamcrest-core-1.3.jar" org.junit.runner.JUnitCore tests.Booking.BookingTests

如果沒有,輸出將是

Exception in thread "main" java.lang.NoClassDefFoundError: org/openqa/selenium/Capabilities

暫無
暫無

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

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