导入org.junit无法解析


114

我需要为面试解决一个Java问题,他们已经向我发送了测试课程。它开始于

import org.junit.Before;

并在以下位置具有以下语法:

@RunWith(JUnit4.class)
...
@Before
...
@Test

我已经有一段时间没有使用Java了,这使我有些困惑。我下载了eclipse,当我尝试编译该测试文件时,导入和@符号出现错误。导入错误引发:

The import org.junit cannot be resolved.

@RunWith甚至无法识别,因为它试图将其解析为一种类型。


1
您在网上搜索了什么?您希望我们为您提供如何运行JUnit 4测试用例的详细说明吗?(提示:JUnit4.class您的代码中有此内容)
Luiggi Mendoza


1
您需要将junit jar文件添加到项目中。您可以使用junit-dep-4.8.2.jar。然后您可以右键单击并选择run as junit测试用例
Krushna

2
您是否已将jUnit的jar文件添加到Eclipse中的构建路径中?
Pradeep Simha 2013年

刚做了,我应该已经用谷歌搜索了这个问题。谢谢您的帮助。
SKLAK

Answers:


192

您需要将junit库添加到项目的类路径。有几种选择可以实现它,具体取决于您的开发设置。

  1. 命令行:在命令行调用的情况下,您必须使用来将其添加junit.jar到应用程序的类路径中java -cp /path/to/junit.jar。在这里看看答案。

  2. 使用eclipse:Eclipse发行版与该库捆绑在一起,这是将其用于项目的方式。右键单击eclipse项目并导航:

属性-> Java构建路径->库->添加库-> JUnit-> Junit 3/4

在要使用其他版本的jar的方案中,不要单击上方的“ 添加库”,而应单击“ 添加外部Jar”,然后在文件系统上找到该库。


1
@NishantShreshth如何在maven项目中添加它?
Kasun Siyambalapitiya

我通过Properties-> Java Build Path添加了JUnit 4,但是Eclipse有时仍会向我显示此错误,尽管可以运行测试而不会出现问题。重新启动Eclipse可以解决该问题-一段时间。有什么解释吗?
Thomas W

对我不起作用。项目模块化后,“库”选项卡中的所有按钮均为灰色。(使用Eclipse 2019-09和Java 11.0.4)。
Gyro Gearloose

14

右键单击eclipse项目并导航:

属性-> Java构建路径->库->添加库-> JUnit-> Junit 3/4

它对我有效。


6

您可以轻松地搜索“ @Test”之类的行,然后在此行中使用快速修补程序“将junit 4库添加到构建路径”。我认为这比手动向项目中添加junit更快。


在我的情况下,这不能解决问题。JUnit完美地在路径中,但它一直显示错误。
猫IT

1
为我工作^^
jump_monkey

6

如果您使用maven并且这段代码位于main文件夹中,请尝试将其重新定位到该test文件夹中。


3
@VigneshrajSekarbabu因为人们通常将junit的范围设置为test,这意味着他们只能在测试文件夹中使用。
Searene

谢谢@searene ..我尝试在src / main / java中使用TestBase,但后来却无法获得testNG批注。因此移至src / test / java。但是现在,我正在尝试在src / main / java中创建RetryAnalyzer,而IRetrAnalyzer在org.testng中,而我无法进入src / main / java类。知道什么能解决这个问题吗?
Vigneshraj Sekarbabu

@VigneshrajSekarbabu一种方法是检查与测试相关的依赖项的范围,确保它们不在范围内test,以便您可以使用内部的所有内容/src/main/java
Searene

5

如果您正在使用eclipse并在Maven项目中工作,则上述步骤也适用。

右键单击您的根文件夹。

Properties -> Java Build Path -> Libraries -> Add Library -> JUnit -> Junit 3/4

逐步说明


对我来说,这只是工作。我正在对Web应用程序执行远程调试,因此eclipse在集成junit时遇到了一些问题。对于maven,是的,maven会导入junit并在我们运行mvn clean install时运行测试。不是专家,但这是我认为发生的事情或至少发生在我身上的事情。
sarthakgupta072

2

似乎Junit jar文件不在路径中,还请确保您使用的是jdk1.5或更高版本。


不只是jar,OP还应该将其作为JUnit测试运行(也许OP会询问它是否没有Java类的运行方式public static void main(String[] args)
Luiggi Mendoza

不知道如何链接JUnit。我想到了。右键单击项目名称,然后链接JUnit。谢谢。
SKLAK

2

如果您使用的是Java 9或更高版本,则可能需要在module-info.java中要求junit依赖项

module myModule {
    requires junit;
}

我很确定与原始问题相同的问题是与此新模块机制相关的。现在,我确实将这行添加到我现有的module-info.java中,并且在程序包浏览器中没有更多的红叉了,但是在源代码中,一切都保持不变。
猫IT

2

如果使用Maven,则可以单击上下文并运行“ Maven / Update Project ...”。

在此处输入图片说明


当我这样做时,module-info.java充满了错误,无法识别lambda。Eclipse / Maven已将库和Java版本恢复为1.5,我确实有<plugin> <groupId> org.apache.maven.plugins </ groupId> <artifactId> maven-compiler-plugin </ artifactId> <version> 3.8 0.0 </版本> <配置> <释放> 11 </释放> </配置> </插件>在我的聚甲醛
陀螺经Gearloose

1

在开始的代码行复制中,过去的“ Junit”或“ TestNG”元素将显示错误,直到您使用项目文件导入库为止。

要将库导入项目:

Right Click on the Project --> Properties --> Java Build Path --> Libraries -> Add Library -> 'Junit' or 'TestNG'

添加Junit库


1

当您将TestNG添加到您的Maven依赖项中时,请将范围从test更改为compile。希望这可以解决您的问题。


请考虑将这些建议作为评论。
哈德斯

1

您需要在pom.xml文件中添加Junit依赖项,这意味着您需要使用最新版本进行更新。

<dependency>
        <groupId>junit</groupId>
        <artifactId>junit</artifactId>
        <version>4.12</version>
        <scope>test</scope>
    </dependency> 

0

如果您想创建自己的测试类。在Eclipse中,转到File- > New- > J Unit Test Case。然后,您可以在向导弹出窗口中选择所有路径和测试类设置。


-1

在pom.xml中更新到最新的JUnit版本。这个对我有用。


此答案会提供有关如何执行此操作的更多详细信息,例如将要粘贴的代码,如何找出最新版本,如何在线搜索代码以获取正确的文本等信息
更好。– LightCC
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.