Как я могу получить выходной каталог сборки внутри тестов, запускаемых sbt? - PullRequest
2 голосов
/ 14 апреля 2020

Мне нужно создать каталоги и файлы для некоторых тестов. Мой проект использует sbt в качестве инструмента для сборки, и обычной практикой является использование File.createTempFile или подобных API, но я ненавижу эту практику. Я хочу, чтобы все файлы, созданные в моих тестах, находились где-то внутри выходного каталога (<module>/target/), чтобы они были удалены при запуске clean, но в противном случае сохранятся, если они понадобятся мне для определения неудачных тестов.

Тестовый фреймворк не имеет значения: если вашему решению требуется конкретный фреймворк, я с радостью приму его или выясню, как он работает и использует его.

Короче, мне нужно ответ на один из этих двух вопросов:

  • Как создать файл в выходном каталоге сборки из тестового запуска sbt?
  • Как узнать, что построить выходной каталог для текущего проекта из тестового запуска sbt?

1 Ответ

1 голос
/ 15 апреля 2020

В ScalaTest попробуйте передать target

settingKey[File]("Main directory for files generated by the build.")

в карту конфигурации как -Dkey=value. Например, в build.sbt укажите

Test / testOptions += Tests.Argument(s"-DtargetDir=${target.value}")

, а затем определите тест следующим образом:

import org.scalatest._

class ExampleSpec extends fixture.FlatSpec with fixture.ConfigMapFixture with Matchers {
  "The config map" should "contain target directory used by sbt" in { configMap =>
    configMap should contain key "targetDir"
  }

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...