首页 > 解决方案 > JUnit 在 IntelliJ 中无法识别

问题描述

我正在尝试在我的 linux 发行版上使用 IntelliJ 集成和设置 JUnit 5 库。我将 JUnit 添加到我的 gradle 中,并使用 gradle 构建它。但是我仍然在我的单元测试中看到一个错误,提示我“将 junit 添加到我的类路径”,即使它已经是。在此处输入图像描述

这是我的 build.gradle

    id 'java'
    id 'idea'
}

group 'com.techchallenge'
version '1.0-SNAPSHOT'

repositories {
    mavenCentral()
}

dependencies {
    implementation 'org.junit.jupiter:junit-jupiter:5.4.2'
    testCompile('org.junit.jupiter:junit-jupiter-api:5.3.1')
    testCompile('org.junit.jupiter:junit-jupiter-engine:5.3.1')
}
test {
    useJUnitPlatform()
}

更新 见截图。我添加了依赖项,它仍然提示我将 junit 添加到我的类路径中,尽管我已经这样做了 更新了智能

更新 2 我更新了 build.gradle 并且还进行了 gradlew clean build test,这是成功的。但它仍然显示我的 junit 注释错误 - 并不断提示我将 junit 5.4 添加到我的类路径中,尽管它在那里。

    id 'java'
    id 'idea'
}

group 'com.techchallenge'
version '1.0-SNAPSHOT'

repositories {
    mavenCentral()
}

dependencies {
    implementation 'org.junit.jupiter:junit-jupiter:5.4.2'
    implementation 'org.junit.jupiter:junit-jupiter:5.4.2'
    implementation 'org.junit.jupiter:junit-jupiter:5.4.2'
    implementation 'org.junit.jupiter:junit-jupiter:5.4.2'
    implementation 'org.junit.jupiter:junit-jupiter:5.4.2'
    implementation 'org.junit.jupiter:junit-jupiter:5.4.2'
    implementation 'org.junit.jupiter:junit-jupiter:5.4.2'

    testCompile('org.junit.jupiter:junit-jupiter-api:5.4.2')
    testRuntime('org.junit.jupiter:junit-jupiter-engine:5.4.2')
    testRuntime('org.junit.vintage:junit-vintage-engine:5.4.2')

}
test {
    useJUnitPlatform()
}

intellij 上的错误

标签: javaintellij-ideajunit

解决方案


它应该识别您的设置。您可以尝试添加 junit5 依赖项(这是使用 IntelliJ 的选项从头开始创建 Gradle 项目添加 junit5 的New Project方式),然后重新加载您的 Gradle 项目。

    dependencies {
        testImplementation 'org.junit.jupiter:junit-jupiter-api:5.6.0'
        testRuntimeOnly 'org.junit.jupiter:junit-jupiter-engine'
    } 

如果您的项目使用cli 命令成功运行测试,您可以尝试File | Invalidate caches/Restart...选择摆脱奇怪的问题gradle test

https://www.jetbrains.com/help/idea/invalidate-caches.html

您必须为 Junit 5 使用正确的导入,您正在使用 Junit4 导入。由于版本 5 @Test,Assertions等都在org.junit.jupiter.api包中。例如:

import org.junit.jupiter.api.AfterEach;
import org.junit.jupiter.api.Assertions;
import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.Test;

public class DummyTest {

    @BeforeEach
    void setUp() {

    }

    @AfterEach
    void tearDown() {

    }

    @Test
    void name() {
        Assertions.assertTrue(true);
    }

您可以查看junit5-jupiter-starter-gradle


推荐阅读