IntelliJ 中具有分层 Gradle 项目的 ScalaTest 的默认工作目录

Default working directory for ScalaTest with hierarchical Gradle projects in IntelliJ

我在 IntelliJ IDEA 中开发了一个 Scala 项目 (GitHub repository)。该项目使用 Gradle 4.3 构建,并使用 ScalaTest 及其最新的 Gradle 插件进行测试 (id 'com.github.maiflai.scalatest' version '0.19')。 Scala插件版本为2017.3.11.1

该项目有两层层次结构:根级别的父项目和作为子项目的子项目。测试使用位于根级别的输入文件(例如 ./compiler/ 目录的项目使用来自 ./queries/ 目录的文件)。测试引用具有相对路径的文件:例如,如果编译器使用查询文件,则将它们引用为 ../queries/query-file.ext.

使用此设置,在 运行 宁 ./gradlew test 时从命令行测试工作正常。但是,当我 运行 一个新的测试表单 IntelliJ 时,工作目录总是设置为根级别,这会破坏测试。 (当然,这可以手动修复,但必须为每个执行的测试完成)。请注意,我使用 "Create separate module per source set" 设置将项目导入 IntelliJ IDEA(因为 issue SCL-12718,尚未在稳定版中修复 - 我不确定这是否会解决问题)。

有没有办法解决或解决这个问题?更新 ScalaTest Gradle 配置以使用当前子项目的目录或重新配置 IntelliJ 以使用父项目的目录都对我有用。

您可以通过以下操作更改 IntelliJ 中测试的默认工作目录:

  1. 打开 运行 -> 编辑配置 ...
  2. 展开左侧窗格中的 "Defaults" 部分,select "Scala Test" 项
  3. 设置"Working Directory"字段

虽然将测试更改为不依赖于工作目录可能会更好。如果您将 "queries" 文件作为 JVM 资源访问,而不是通过相对路径打开它们,那么它应该可以在两种环境中工作。参见 How do I load a file from resource folder?