我有一个Kotlin项目,当我运行JUnit测试时,在IntelliJ中看不到测试执行结果,而是得到此消息:
未收到测试事件
我正在使用此设置:
macOS Mojave
Intellij CE 2019.2
JDK 11.0.3
Kotlin 1.3.50
Gradle 5.2.1
JUnit 4.12
你能帮我吗?
答案 0 :(得分:18)
更新到2019.2.2或更高版本,其中包含related issue的修复程序。
一种解决方法是通过更改delegation option使用IntelliJ IDEA而不是Gradle运行测试。
答案 1 :(得分:12)
对我来说,发生同样的问题,下面的更改对我有用。
我正在使用的IntelliJ版本:2019.2.2
在IntelliJ IDE中,转到
文件->设置->构建,执行,部署->构建工具-> Gradle
在Run test using:
下拉选项中,这里是:Gradle(default)
将其更改为IntelliJ IDEA
答案 2 :(得分:4)
就我而言,我的Gradle JVM配置无效(已从文件系统中删除了已配置的jdk)。
要修复此问题,必须在文件->设置->构建,执行,部署->构建工具-> Gradle-> Gradle JVM上更改Gradle JVM。
由于无效的jdk路径,它呈红色。
Intellij版本:2019.2.3
希望有帮助。
答案 3 :(得分:3)
对于仍面临此问题的任何人-
在Build
标签中检查是否有任何编译器错误。
答案 4 :(得分:1)
即使使用IntelliJ IDEA 2019.2.4,我也面临着同样的问题(最高答案说这已在2019.2.2修复)。事实证明,在尝试之前,我必须Invalidate Caches / Restart...
。
答案 5 :(得分:1)
在尝试自己解决此问题时,我发现JUnit 4可以工作,但是JUnit 5报告“未收到测试”。根据{{3}},我找到了解决方案。
即使Gradle 4.6(显然是所有较新的版本)都具有本机 对JUnit 5的支持,默认情况下未启用此支持。要是我们 要启用它,我们必须确保测试任务使用JUnit 5 而不是JUnit 4。
当我将以下代码添加到Gradle时,JUnit 5起作用了。
test {
useJUnitPlatform()
}
答案 6 :(得分:1)
我经常必须删除build和out文件夹来解决此问题..
答案 7 :(得分:1)
对于使用IntelliJ的Spring boot gradle项目,我的问题是Spring Boot当前带来了JUnit 5。我还手动安装了JUnit 5。
在compile 'org.junit.jupiter:junit-jupiter-api:5.6.3'
中删除build.gradle
后,我的测试再次开始工作。
答案 8 :(得分:0)
发生问题是因为我同时使用了以下两个插件
plugins
{
id 'org.springframework.boot' version '2.2.6.RELEASE'
id 'io.spring.dependency-management' version '1.0.7.RELEASE'
...
}
删除第二个测试后,找到并执行了测试。
答案 9 :(得分:0)
答案
我知道将Gradle与最新的JDK版本(13和14)一起运行时会发生一些问题。如果您选择JVM版本13或14作为Gradle JVM,请尝试使用8或11。
将Gradle JVM切换到版本11:
File -> Settings -> Build Execution, etc -> Built Tools -> Gradle -> Gradle JVM
说明
我相信默认情况下Intellij将使用项目SDK:
Project strcuture -> Project -> Project SDK
我已经有好几次了,并选择了JVM 11版为我修复了问题。
值得注意的是,在我的大多数项目中,我正在使用:
我不记得我在哪里读它,但我相信lombok插件+ gradle + JVM版本存在一些问题。如果我记得在哪里找到有关该帖子的信息,我可能会重新考虑该答案。
答案 10 :(得分:0)
您最有可能不告诉系统如何运行测试。
在类标题上,例如定义一个测试运行器,例如:
@RunWith(MockitoJUnitRunner::class)
class MYTest {//...}
或可以定义junitXRunner等。
答案 11 :(得分:0)
对于那些使用IntelliJ和Kotlin仍然可能遇到此问题的人:
将以下行添加到build.grade.kts中。 希望对您有所帮助。
dependencies {
testImplementation(kotlin("test-junit5"))
testImplementation(platform("org.junit:junit-bom:5.7.0"))
testImplementation("org.junit.jupiter:junit-jupiter")}
tasks.test {
useJUnitPlatform()
testLogging {
events("passed", "skipped", "failed")
}
}
PS:不添加“任务”。测试前{...},我收到以下错误!
找不到函数invoke()
答案 12 :(得分:0)
确保您使用的是来自 org.junit.Test 的正确 @Test 注释; 有时在自动导入时,它可以从其他库中获取注释。对于前 - org.junit.jupiter.api.Test;
答案 13 :(得分:0)
尝试添加
testRuntimeOnly("org.junit.vintage:junit-vintage-engine:5.7.2")
如果您的测试使用旧的 org.junit.Test
而不是 org.junit.jupiter.api.Test
答案 14 :(得分:0)
这是对我有用的解决方案:
File -> Settings -> Build, Execution, Deployment -> Build Tools -> Gradle
Switching Gradle JVM to: JAVA_HOME version 11.0.10 worked.
答案 15 :(得分:-1)
对于我来说,单击“帮助->检查更新...”很有帮助