是什么原因导致 junit 警告 org.junit.platform.launcher.core.EngineDiscoveryOrchestrator lambda$logTestDescriptorExclusionReasons$7

boh*_*dan 22 java junit gradle junit5

我有一个基于 gradle 的 java 测试框架。

将 junit 更新到 5.7.2 后,每个测试都开始出现此警告:

Jul 21, 2021 10:23:45 AM org.junit.platform.launcher.core.EngineDiscoveryOrchestrator lambda$logTestDescriptorExclusionReasons$7
INFO: 0 containers and 3 tests were Method or class mismatch
Run Code Online (Sandbox Code Playgroud)

使用的 junit 依赖项是:junit-jupiter-api, junit-jupiter-engine, junit-jupiter-params

可能是什么原因造成的?潜在的解决方案是什么?

jef*_*gon 30

当 1 个类中有多个测试方法并且仅执行其中之一时,会出现该警告。如果您运行该类中的所有测试方法,它就不会出现。从警告信息来看,你在一个类中创建了4个@Test方法,但只执行了其中一个。警告消息抱怨其他 3 个测试方法被排除在执行之外。如果执行所有 4 个测试方法(通过运行整个类来完成),该消息就会消失。换句话说,这是一个毫无意义的警告,您可以忽略它。

  • 谢谢您的回答!这是一次相当烦人的经历,编写我的前几个普通项目测试并看到这一点。该消息应类似于“警告运行了 4 次测试中的 1 次”。我不知道什么是“方法或类不匹配”。 (4认同)

小智 10

如果您正在使用 Intellij,这可能会对您有所帮助。

首选项 > 构建、执行、部署 > 构建工具 > Gradle 将“构建并运行使用:”和“运行测试使用”设置为“Intellij IDEA”


小智 -1

我认为潜在的解决方案是添加静态导入:

import static org.mockito.Mockito.when;
Run Code Online (Sandbox Code Playgroud)

它解决了我的代码中的问题。