在 Visual Studio Code 中测试 Java
在 Visual Studio Code 中测试 Java 的功能由 Test Runner for Java 扩展启用。这是一个用于运行和调试 Java 测试用例的轻量级扩展。
概述
该扩展支持以下测试框架:
Test Runner for Java 与 Language Support for Java™ by Red Hat 和 Debugger for Java 扩展协同工作,提供以下功能:
- 运行/调试测试用例
- 自定义测试配置
- 查看测试报告
- 在测试资源管理器中查看测试
要求
- JDK (1.8 或更高版本)
- Visual Studio Code (1.59.0 或更高版本)
- Extension Pack for Java
项目设置
注意:如果你已经在项目中设置了 Java 测试框架,可以跳到功能部分。
为你的项目启用测试并添加测试框架 JAR
从 Test Runner for Java 0.34.0 版本开始,你只需在测试资源管理器中执行几个步骤,即可为你的非托管文件夹项目(没有任何构建工具的项目)启用测试框架:
注意:目前此功能仅支持不包含任何测试依赖项的非托管文件夹。
JUnit 4
Maven
将以下配置添加到你的 pom.xml
文件中:
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>(YOUR_JUNIT_VERSION)</version>
<scope>test</scope>
</dependency>
Gradle
确保以下几行已添加到你的 build.gradle
文件中:
plugins {
java
}
dependencies {
testImplementation('junit:junit:(YOUR_JUNIT_VERSION)')
}
非托管文件夹
如果你的项目不使用任何构建工具,你可以通过测试资源管理器启用 JUnit 4,或者手动下载以下 JAR 文件并将其添加到项目类路径中(通过设置 java.project.referencedLibraries
,更多信息请查看依赖管理):
你可以查看 JUnit 官方维基,了解更多关于如何设置 JUnit 4 的信息。
JUnit 5
JUnit 5 团队提供了一系列使用不同构建工具的示例项目。如果你的项目使用 Maven 或 Gradle 作为构建工具,请查看 junit5-sample 仓库。
非托管文件夹
如果你的项目不使用任何构建工具,你可以通过测试资源管理器启用 JUnit 5,或者手动将 junit-platform-console-standalone JAR 文件包含到项目类路径中(通过设置 java.project.referencedLibraries
,更多信息请查看依赖管理)。
TestNG
Maven
将以下配置添加到你的 pom.xml
文件中:
<dependency>
<groupId>org.testng</groupId>
<artifactId>testng</artifactId>
<version>(YOUR_TESTNG_VERSION)</version>
<scope>test</scope>
</dependency>
Gradle
确保以下几行已添加到你的 build.gradle
文件中:
plugins {
java
}
dependencies {
testImplementation('org.testng:testng:(YOUR_TESTNG_VERSION)')
}
非托管文件夹
如果你的项目不使用任何构建工具,你可以通过测试资源管理器启用 TestNG,或者手动下载以下 JAR 文件并将其添加到项目类路径中(通过设置 java.project.referencedLibraries
,更多信息请查看依赖管理):
功能
运行/调试测试用例
Test Runner for Java 扩展将在类和方法定义的左侧生成快捷方式(绿色播放按钮)。要运行目标测试用例,请选择绿色播放按钮。你也可以右键单击它以查看更多选项。
测试资源管理器
测试资源管理器是一个树状视图,用于显示工作区中的所有测试用例。你可以选择 Visual Studio Code 左侧活动栏上的烧杯按钮来打开它。你也可以从那里运行/调试你的测试用例并查看它们的测试结果。
自定义测试配置
有时你可能希望自定义配置来运行测试用例。为此,你可以在工作区的设置中的 java.test.config
部分添加配置。
目前支持的配置有:
- args: 指定将传递给测试运行器的命令行参数。
- classPaths: 在此设置中定义的类路径将被附加到已解析的类路径中。
- env: 通过键值对对象指定运行测试时的额外环境变量。
- envFile: 指定包含环境变量定义的文件的绝对路径。
- modulePaths: 在此设置中定义的模块路径将被附加到已解析的模块路径中。
- name: 指定配置项的名称。你可以通过设置
java.test.defaultConfig
来设置默认配置名称。 - preLaunchTask: 指定在
tasks.json
(位于工作区的.vscode
文件夹中)中定义的任务标签。该任务将在测试开始前启动。 - sourcePaths: 指定调试测试时的额外源路径。
- vmArgs: 为 JVM 指定额外的选项和系统属性。
- workingDirectory: 指定运行测试时的工作目录。
- testKind: 指定此测试配置的目标测试框架。支持的值为
junit
、testng
。 - filters: 指定测试过滤器。
- tags: 指定要包含或排除的标签。以
!
为前缀的标签将被排除。注意:此设置仅在testKind
设置为junit
时生效。
- tags: 指定要包含或排除的标签。以
更多详情可以在 vscode-java-test Wiki 上找到。
查看测试结果
运行/调试测试用例后,相关测试项的状态将在编辑器装饰和测试资源管理器中更新。
你可以触发 Test: Peek Output 命令来查看结果视图。你可以选择堆栈跟踪中的链接导航到源代码位置。
生成测试
该扩展提供了帮助你搭建测试用例的功能。你可以在编辑器上下文菜单中找到入口。选择 Source Action...,然后选择 Generate Tests...。
如果你从主源代码(被测试对象)触发此源操作,系统将询问你测试类的完全限定名以及你想要测试的方法。然后,该扩展将为你生成测试代码。
如果你从测试源代码触发源操作,系统将询问你想要添加哪种类型的测试方法,包括生命周期方法和测试方法。
测试导航
该扩展提供了帮助你在测试和被测试对象之间导航的功能。如果你的源代码位于 src/main/java
或 src/test/java
中,你可以在编辑器上下文菜单中找到名为 Go to Test 或 Go to Test Subject 的入口。
你也可以在命令面板 (⇧⌘P (Windows, Linux Ctrl+Shift+P)) 中搜索 Java: Go to Test 来找到该命令。
VS Code 测试命令
还有其他测试命令(例如,Run Tests in Current File),可以通过在命令面板 (⇧⌘P (Windows, Linux Ctrl+Shift+P)) 中搜索“Test:”来找到。
VS Code 测试设置
有一些特定于测试的 VS Code 设置,可以通过在设置编辑器 (⌘, (Windows, Linux Ctrl+,)) 中搜索“testing”来找到。
常见问题
如果你在使用该扩展时遇到任何问题,可以查看 常见问题解答 和我们的 问题列表,看看是否有解决你问题的方法。
贡献和反馈
如果你有兴趣提供反馈或直接为代码库做贡献,请阅读 为 Test Runner for Java 做贡献,其中涵盖以下内容:
后续步骤
继续阅读以了解: