当前位置: 首页 > 知识库问答 >
问题:

如何使用控制台启动器从命令行运行 JUnit5 测试?

平和雅
2023-03-14

我编译了测试,并尝试执行以下操作来运行它们:

> java -jar lib/junit-platform-console-standalone-1.0.0-M4.jar --class-path ./bin --select-class com.mycompany.DbTest

这引发了一个巨大的异常,开始是这样的:

Exception in thread "main" java.lang.NoClassDefFoundError: org/junit/platform/commons/JUnitException
at java.lang.ClassLoader.defineClass1(Native Method)
at java.lang.ClassLoader.defineClass(ClassLoader.java:763)
at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:142)
...

但基本上说它找不到JUnitExc的类。如果我让控制台启动器查找测试,它找不到任何测试:

> java -jar lib/junit-platform-console-standalone-1.0.0-M4.jar -p bin/
╷
├─ JUnit Jupiter ✔
└─ JUnit Vintage ✔

Test run finished after 20 ms
[         2 containers found      ]
[         0 containers skipped    ]
[         2 containers started    ]
[         0 containers aborted    ]
[         2 containers successful ]
[         0 containers failed     ]
[         0 tests found           ]
[         0 tests skipped         ]
[         0 tests started         ]
[         0 tests aborted         ]
[         0 tests successful      ]
[         0 tests failed          ]

我不知道如何在没有IDE的情况下从命令行运行JUnit5测试。

更新:

使用 Maven 运行测试(使用 Surefire 插件)会给我同样的错误。我什至删除了所有测试,但仅导入 junit5 依赖项的测试除外,但我仍然收到错误。

共有2个答案

习淇
2023-03-14

正如评论中所说,类路径上有JUnit 4对我来说也是个问题。确保从macOS扩展文件夹或您的gradle依赖项中删除它的所有痕迹。我不得不使用

configurations.compile {
    exclude group: 'junit'
}

从任何地方强制删除它,包括传递依赖。

钱运浩
2023-03-14

您的初始命令行包含一个副本。单个“java -jar ...”应该允许Java运行时找到捆绑的< code>JUnitException类。

同时使用选项--class path--scan class path来运行自动扫描。

类似于:java-ea-jar lib/junit-platform-console-standalone-1.0.0-M4.jar-类路径bin-扫描类路径

如果要使用选择器,例如 --select-class,您仍然必须为自定义类路径提供 --class-path bin否则,只有独立 jar 位于类路径上,其中不包含您的测试。

或者在Mac Extension Libraries文件夹中有干扰测试执行的jar。请把它们拿掉。

 类似资料:
  • 我正在为我的Spring启动应用程序执行单元测试。测试工作正常,并在从intellij运行时给出预期的输出。我正在尝试使用Junit5控制台启动器从终端运行相同的测试。这是我使用的命令:- 我从包含测试类的< code > out/tests/package 文件夹中运行上面的命令。 我可以在我的外部jars文件夹中看到所需的jar和依赖项。但是当我从终端运行它时,我得到了下面的错误。 整个堆栈跟

  • 我试图用JUnit5控制台启动器运行一个简单的测试。我试了几个选择,但都不起作用。谁能告诉我哪里出了问题吗? .+--JUnit Jupiter[OK] '--JUnit Vintage[OK] 测试运行在11毫秒后完成[2个容器] [0个容器跳过][2个容器启动] [0个容器中止][2个容器成功] [0个容器失败][0个测试找到] [0个测试跳过][0个测试启动] [0个测试中止][0个测试成功

  • 问题内容: 我正在尝试使用JUnit5控制台启动器运行一个简单的测试。我尝试了几种选择,但是没有用。有人可以告诉我哪里出了问题吗? 给我警告 我试图在目录中运行所有测试,但这似乎找不到测试: 结果是这样的: 。+-JUnit Jupiter [确定] ‘-JUnit Vintage [确定] 11毫秒后测试运行完成[找到2个容器] [跳过0个容器] [0个容器中止] [2个容器成功] [0个容器失

  • 我有一个 .NET Core 控制台应用程序并运行了 。但是,我不知道如何从命令行运行应用程序。有什么提示吗?

  • 我有一个包含以下文件的Java项目: C:\MyProject\myPackage\MyTests.class C:\MyProject\lib\junit-platform-console-standalone-1.5.2.jar C:\MyProject\lib\other-library.jar MyTests 文件是使用 IDE 编译的,该 IDE 具有 junit-platform-co

  • 在我的实体中,我有双向的一对多关系,我想用mock.mvc编写集成测试。但是,在添加父级之前,我不能添加子级。出于这个原因,我希望首先运行AirportControllerTest,其次是RouteControllerTest,最后是FlightController。 有可能吗?或者如何处理这种情况?