Visual Studio Code 中的 JUnit

Sal*_*lly 10 java visual-studio-code

我在 Visual Studio Code 中运行 JUnit 时遇到了各种各样的问题。我有两个主要问题,它们在我创建的所有项目中都不共存。

问题 1:创建并运行 Java 项目后,如果我尝试添加 JUnit 测试类,程序找不到该类/测试。我应该看到一个选项来运行或调试我的测试,但没有弹出这样的选项。此外,当我单击测试资源管理器选项卡时,我没有看到列出的测试类,但它位于项目文件夹中。

问题 2:我将一个最初在 eclipse 中开发的项目导入到 VS 代码中取得了一些成功。这并不理想。这样做时,我遇到的问题是 VS Code 在 JUnit 导入方面存在问题。有时它无法识别 @Test 注释,并会尝试通过让我在程序中进行导入来解决导入问题,(例如:使用 assertSame 方法时,我必须编写: org.junit.Assert.assertEquals("stringName", v1.getName);

Has anyone had similar problems, or does anyone have some insight on how to run a java project without a maven or another project manager? I'm sure there is a way to make this work, but I feel like I'm missing the obvious.

Tia*_*ica 6

要在 Visual Studio Code 中进行 Java 单元测试,我建议您满足以下要求

一旦您拥有了该项目和新创建的 Java 项目,您应该知道始终将生产代码与测试代码分开。为此,只需test在与 相同的位置创建一个文件夹src

拥有该文件夹后,创建一个SomethingTest.java类似的文件

import static org.junit.Assert.fail;

import org.junit.Test;

public class NgramTest {
    
    @Test 
    void test() {
        fail("Not yet implemented");
    }

}
Run Code Online (Sandbox Code Playgroud)

运行测试 JUnit

当您单击“运行测试”时,您应该收到“尚未实施”消息

JUnit运行后结果


如果您无法运行该程序并获得结果,可能至少有两个不同的原因

1.

导入org.junit无法解析

要修复此问题,如果项目使用 Maven 来管理依赖项,请确保您已安装 Maven(如何在 Windows 10 中安装 Maven?)。然后确保您运行了mvn installor mvn package,如此处所述

2.

SomethingTest.java 不在项目 PROJECT_NAME 的类路径上,仅报告语法错误

要修复此问题,请将该文件夹添加到项目根目录中的 .classpath

<classpathentry kind="src" output="target/test-classes" path="test">
    <attributes>
        <attribute name="optional" value="true"/>
        <attribute name="maven.pomderived" value="true"/>
        <attribute name="test" value="true"/>
    </attributes>
</classpathentry>
Run Code Online (Sandbox Code Playgroud)


Leo*_*SFT -1

1.确保您已经安装了Java Test Runner扩展

2.打开.classpath文件并更改

<classpathentry kind="src" path="src/test/java" />
Run Code Online (Sandbox Code Playgroud)

<classpathentry kind="src" path="src/test/java" output="build/classes/test">
   <attributes>
      <attribute name="test" value="true" />
   </attributes>
</classpathentry>
Run Code Online (Sandbox Code Playgroud)

有关单元测试的更多信息