gpt4 book ai didi

java - 无法从命令行运行 JUnit 测试用例

转载 作者:行者123 更新时间:2023-12-02 10:57:57 25 4
gpt4 key购买 nike

我正在尝试从命令行(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 project structure

硬盘上的结构如下所示:

hard drive project structure

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

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

<小时/>

问题:

如何使用我的结构从 PowerShell 中的命令行运行 JUnit 测试用例?

最佳答案

在 PowerShell 中,分号是一个命令分隔符(允许您将两个语句放在一行上),因此您正在运行 java -cp . (它应该输出命令帮助),然后 /libs/junit-4.12.jar (不被识别为命令)。 JUnit wiki 中的示例显然不是为 PowerShell 制作的,而是为 CMD 制作的,它使用与号 (&) 来链接命令,因此那里不会出现问题。

此外,您将类路径中的路径设置为绝对路径 (/libs/junit-4.12.jar),但您的 libs 目录位于项目文件夹中。这就是为什么java提示它找不到org.junit.runner.JUnitCore类。当您从项目目录的根目录运行 JUnit 时,您需要创建相对于该位置的路径。

由于您将代码编译到了不同的文件夹 (.\out\product\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

更好的是,将所有参数定义为数组和 splat它:

$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。

关于java - 无法从命令行运行 JUnit 测试用例,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51573091/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com