[英]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中,項目結構如下所示:
在硬盤驅動器上,結構如下所示:
•“ 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.