【发布时间】:2020-05-28 22:16:01
【问题描述】:
我正在使用 maven 在 Visual Studio 代码中开发一个 java 项目,目前正在尝试编写一个测试类。 我已将 junit 作为依赖项添加到我的 pom.xml 文件中:
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.12</version>
<scope>test</scope>
</dependency>
目前,我的类是这样的:(Board类没有问题,getOne()返回1)
import org.junit.Test;
public class BoardTest {
private Board board = new Board();
@Test
public void testOne() {
assert(board.getOne() == 1);
}
}
最初,当我打开文件时,一切都很好,但是当我保存时,vscode 会生成 2 条错误消息,当我关闭并重新打开文件时,这两条错误消息都会消失,但在保存后又出现:
“无法解析导入的org.junit”
“测试无法解析为类型”
有趣的是,即使存在这些错误,vscode 也会为我提供导入和 @Test 标志的鼠标悬停信息,就好像它实际上已经正确解决了它们一样。
我已经从命令行运行mvn install,并且vscode甚至在项目的java依赖项部分列出了junit-4.12.jar。
运行mvn test 会产生预期的结果(测试通过),在mvn package 之后,从命令行运行项目的.jar 文件会毫无问题地运行项目。每当我尝试从 vscode 运行项目时,它都会通知我构建失败,即使错误消息当前不存在(即在我打开测试类之后但在我保存之前)。如果我告诉 vscode 继续进行,该项目再次运行良好。尝试从 vscode 运行测试的工作方式相同(我收到一条错误消息,但在我告诉 vscode 继续进行后测试正常通过)。
关于什么可能导致这种情况的任何想法?以下是我正在使用的所有内容的当前版本:
JDK:openjdk v11.0.7
vscode:v1.45.1
maven:Apache Maven v3.6.3
【问题讨论】:
-
您将 junit 导入为
scope=test。这是正确的,但意味着它只会在 src/test/* 目录中可见。您的 BoardTest 文件在哪里? -
另外,错误信息是什么?
-
我假设您的意思是我尝试运行测试时的那个。右下角的标准弹出窗口显示“构建失败,您要继续吗?”通过忽略它,我的意思是我单击此弹出窗口上的继续选项。 BoardTest 类位于 src/test/java/display 中。 display 只是它的包名
-
检查 maven .m2/repository 文件夹中是否有 junit-4.12.jar。如果不尝试运行'mvn -B verify'
-
这个问题在eclipse上消失了,更多的证据表明这是vscode的问题
标签: java maven visual-studio-code junit importerror