Intellij "java: package org.junit does not exist"

36

当我尝试运行我的测试时,出现以下错误: 我在谷歌上查找了一些信息,但这并没有帮助。

Error:(3, 24) java: package org.junit does not exist
Error:(3, 1) java: static import only from classes and interfaces
Error:(5, 17) java: package org.junit does not exist
Error:(6, 17) java: package org.junit does not exist
Error:(12, 10) java: cannot find symbol
    symbol:   class Before
    location: class edu.kit.ipd.swt1.SimpleEditMeTest
Error:(17, 10) java: cannot find symbol
    symbol:   class Test
    location: class edu.kit.ipd.swt1.SimpleEditMeTest
[...]

我的测试代码:

package edu.kit.ipd.swt1;
import static org.junit.Assert.assertNotNull;
import org.junit.Before;
import org.junit.Test;

public class SimpleEditMeTest {
private EditMe editMe;
@Before
public void setUp() throws Exception {
    editMe = new EditMe();
}
@Test
public void test() {
    assertNotNull(editMe.getFoo());
}
}

整个项目的屏幕截图

运行配置

依赖项 i.stack.imgur. com/OiQWU.png(无法发布超过2个链接)


1
你的pom.xml文件中是否声明了junit作为测试依赖项? - kuporific
13个回答

37

这种方法对我很有效:

  1. 右键点击 pom.xml
  2. 选择 Maven
  3. 重新加载项目

谢谢!我不得不关闭项目并重新打开,IntelliJ同步了pom文件中的所有依赖项。 - Richard Guion

17

我和你一样遇到了这个问题。为了解决它,我需要打开我的项目的模块设置,手动添加 junit-4.12.jarhamcrest-core-1.3.jar 两个依赖项。这两个依赖项包含在 IntelliJ 安装库目录中。


我收到了“无法加载插件描述符”的错误信息。 - binaryBigInt
1
这对我来说失败了,我得到了“重复源错误”。我的解决方法是删除重复的源文件夹,请参见此处 https://dev59.com/oWAg5IYBdhLWcg3wU5gS#25096434 - khylo
如果您可以从IntelliJ运行测试,但找不到org.junit.runner,那么这个解决方案也可以解决它。谢谢! - Brugui
请不要这样做,请删除此答案。它只适用于您的本地计算机,但当您与其他人在同一项目上工作时,它将无法解决问题。 - TMOTTM

17
你想运行你的测试,因此需要将JUnit的范围设置为“编译”,如下图所示:

1


1
如果需要这个,那么“测试”范围有什么意义呢? - Evan

16

如果你在使用maven时遇到问题,请检查以下几个方面:

  • (健全性检查)你是否在pom.xml中将junit添加为依赖项?
  • Intellij是否已将你的模块接受为maven模块?尝试右键单击模块/项目,然后选择“Add as Maven Project”或者“Maven->Reimport”
  • 在你的pom文件的依赖声明中是否使用了明确的版本号,例如<version>4.12</version>。可以尝试这样做。(你可能不想这样做,因为你希望版本由父模块决定。继续阅读。)
  • 是否记得添加dependencyManagement?如果你不想在当前项目中显式指定版本号,则Maven需要它来解析正确的版本号。对我来说,它是指向父项目的。像这样:
<dependencyManagement>
    <dependencies>
        <dependency>
            <groupId>com.myorg</groupId>
            <artifactId>myproject-parent</artifactId>
            <version>${myproject.version}</version>
            <scope>import</scope>
            <type>pom</type>
        </dependency>
    </dependencies>
</dependencyManagement>

9
对我而言,Maven->重新导入,然后Build->重新构建解决了这个问题。 - CrazyPenguin
嘿,有时候解决问题真的很简单。是的,在Intellij中前往Maven仪表板并点击重新导入就可以清除错误了。对于未来的读者,有几种方法可以进行依赖项重新导入。 - granadaCoder

6
解决方法是将junit库作为项目的依赖项添加。可以通过将junit添加到全局库中,然后将鼠标悬停在错误(junit单词)上并右键单击,将junit添加到类路径中来完成此操作。 使用alt+shift+ctrl+s打开项目设置,在同一位置中要么将junit添加到全局库中,要么按照罗布在他的答案中提到的方式将其添加到项目部分中。一旦您在此处添加了它,红色灯泡图标将为您提供将其添加到类路径中以解决错误的选项。

1
这对我有用,但我很好奇为什么需要这样做。为什么它在pom.xml中,我是否也需要将其添加为全局库? - Ramon de Klein

1
将JUnit依赖项添加到build.gradle中解决了该问题。
dependencies {
    testCompile 'junit:junit:4.12'
    compile 'junit:junit:4.12'
}

1
对于我的情况,我也手动向项目中添加了junit库依赖项
我正在使用IntelliJ 2020.2 它可以工作!

capture image adding junit library to intellij


1
我认为这是Intellij的一个bug,因为它们有时无法在构建操作期间加载具有测试范围的依赖项。 您可以看到,此错误仅出现在具有测试范围的依赖项上。

1
您可以进入项目结构并通过将junit依赖项从仅测试更改为编译来编辑依赖项。

intelij community edition


1

我有同样的问题。添加JAR文件没有任何作用。我通过添加Junit 5.3库(而不是JAR文件)依赖项来解决了这个问题。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接