多仓库工作区中VS Code Java测试运行器无法识别Repo1内的JUnit测试
在多仓库工作区环境下,VS Code的Test Runner无法识别Repo1中automation文件夹下src/test/web目录内的JUnit测试,无法直接在VS Code中运行,但通过终端执行Maven命令可正常运行这些测试。
原目录结构:
workspace/ ├─ Repo 1/ │ ├─ automation folder/ │ │ ├─ src/ │ │ │ ├─ test/ │ │ │ │ ├─ web/ │ ├─ pom.xml ├─ Repo 2/
将Repo1内的pom.xml移至workspace根目录后,VS Code可正常识别并运行测试,此时目录结构:
workspace/ ├─ Repo 1/ │ ├─ automation folder/ │ │ ├─ src/ │ │ │ ├─ test/ │ │ │ │ ├─ web/ ├─ Repo 2/ ├─ pom.xml
咨询以下两个问题:
- 是否可以配置VS Code,使其在
pom.xml位于Repo1目录内时也能识别这些JUnit测试? - 若该配置不可行,能否将workspace根目录下的文件提交至Repo1仓库?
问题1:配置VS Code识别Repo1内的pom.xml
可以通过以下几种方式实现:
指定Maven项目根目录
打开VS Code的settings.json(快捷键Ctrl+,后搜索"settings.json"),添加以下配置,告知Java扩展将Repo1作为Maven项目根目录:"java.configuration.maven.pomRoots": [ "${workspaceFolder}/Repo 1" ]配置生效后,VS Code会加载Repo1内的pom.xml,自动识别其中的测试类。
手动加载Maven项目
确保已安装"Maven for Java"扩展,打开左侧Maven面板,点击面板中的"+"按钮,选择Repo1目录下的pom.xml手动添加项目,完成后Test Runner即可识别测试类。指定测试扫描路径
如果上述方法无效,可在settings.json中直接指定测试类的扫描路径:"java.test.config": { "paths": [ "${workspaceFolder}/Repo 1/automation folder/src/test/web" ] }
问题2:将workspace根目录的文件提交至Repo1仓库
可以实现,但需通过Git命令行参数指定仓库与工作区路径,步骤如下:
- 进入workspace根目录的终端,执行命令将
pom.xml添加到Repo1仓库的追踪列表:git --git-dir="./Repo 1/.git" --work-tree="./" add pom.xml - 提交变更:
git --git-dir="./Repo 1/.git" --work-tree="./" commit -m "Move pom.xml to workspace root" - 推送到远程仓库:
git --git-dir="./Repo 1/.git" push
注意:这种操作会将pom.xml作为Repo1仓库的根目录文件提交,其他用户克隆Repo1时,pom.xml会出现在他们本地的Repo1文件夹根目录,而非workspace根。为避免仓库结构与本地工作区结构不一致带来的混乱,建议优先采用问题1的配置方案。
内容的提问来源于stack exchange,提问作者rick

