java - 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()
}
解决方案
它应该识别您的设置。您可以尝试添加 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);
}
推荐阅读
- linux - 运行 openvas-setup
- r - 如何从现有的按天和个人分组并计算比例的数据框创建新的数据框?
- php - 获取字符串中每个字符的字符类型
- ruby-on-rails - 重定向后会话为空
- python-3.x - 可以连接到本地主机但不能远程,pyspark
- linux - 通过环境变量限制 TensorFlow GPU 内存使用
- c++ - 为什么我的 void 函数没有返回正确的值?(C++ 的新手)
- http - 为什么同源策略不阻止 POST 请求?
- jquery - 如何删除全日历 ASP.NET Core MVC 中的事件?
- tensorflow - AttributeError:模块“keras_preprocessing.image”没有属性“DataFrameIterator”