Как вы разделяете классы между тестовыми конфигурациями, используя SBT

Я следовал инструкциям на SBT 'Документация по настройке тестовых конфигураций. У меня есть три тестовые конфигурации: Test, IntegrationTest и AcceptanceTest. Так что мой каталог src выглядит так:

SRC /принятие /Скала /Это/Скала /тестовое задание/Скала /

У меня вопрос, как я могу настроить SBT, чтобы позволить разделение классов между этими конфигурациями? Пример: у меня есть класс вЭто" Конфигурация для упрощения настройки базы данных и разрушения. Один из моих приемочных испытаний в "принятие» Конфигурация может использовать этот класс. Как мне это сделать "Это" класс доступен для теста в "принятие»

Спасибо заранее.

Ответы на вопрос(3)

 Vitamon02 янв. 2017 г., 05:59
в прошлый раз, когда я разместил URL без хорошего примера, это был минусбуду безжалостно :)
Решение Вопроса

й конфигурации.Зависимости и классы. Например,настраиваемая тестовая конфигурация раздел показывает это определение для пользовательской конфигурации:

lazy val FunTest = config("fun") extend(Test)

extend часть означает, что скомпилированные нормальные тестовые источники будут на пути к классам дляfun источники. В вашем случае объявитеacceptance Конфигурация для расширенияit конфигурация:

lazy val AcceptanceTest = config("acceptance") extend(IntegrationTest)
 Edmondo198416 февр. 2018 г., 17:42
но они также будут запускаться как тесты и компилироваться, поэтому вам нужно иметь одинаковый путь к классам
 Brian Scaturro17 нояб. 2012 г., 18:50
Ааа ... Это намного проще. Спасибо!
 EugeneMi14 мар. 2018 г., 21:27
Безразлично»Кажется, это работает для меня. AcceptanceTest не может найти классы из IntegrationTest. С тех пор что-нибудь изменилось?

Maven макет каталога по умолчанию.

Он будет распознавать нижние папкиsrc/test/scala компилировать вместе с.src/main/scala

Итак, если вы переместите другие папки вsrc/test/scala SBT скомпилирует их, и вы сможете делиться кодом между ними. например.:

└── scala
    ├── acceptance
    │   └── scala
    │       └── Acceptance.scala
    ├── it
    │   └── scala
    │       └── IT.scala
    └── Test.scala

Бегsbt test скомпилирует все три файла в каталоге. Итак, с этим Принятием обратитесь и можете создать новый класс IT, например.

 Brian Scaturro14 нояб. 2012 г., 21:41
Это единственный способ? Мне нравится разделение, обеспечиваемое различными конфигурациями. Я структурирован таким образом, что sbt test будет запускать модульные тесты, sbt it: test будет запускать интеграционные тесты, а sbt accept: test будет запускать приемочные тесты. Нет другого способа получить это классы на пути принятия классов?
 Brian Scaturro15 нояб. 2012 г., 00:13
Brilliant! Это именно то, что я хочу. Спасибо.
 Brian15 нояб. 2012 г., 19:42
КакAcceptanceTest определены?
 Brian Scaturro15 нояб. 2012 г., 19:10
Ну, это определенно поставило меня на правильный путь. Вот что в конечном итоге помогло мне:unmanagedSourceDirectories in AcceptanceTest Seq( base / "src/acceptance/scala", base / "src/it/scala.scala" ) }
 Brian Scaturro16 нояб. 2012 г., 00:55
Это установлено в Build.scala.configs(AcceptanceTest) .settings(inConfig(AcceptanceTest)(Defaults.testSettings) : _*) .settings(libraryDependencies += scalatest)
 Brian14 нояб. 2012 г., 22:56
Нет я неЯ думаю, что это единственный путь. Вам нужно будет добавить пользовательские пути к источникам и пути к классам в сборку. ДобавлениеscalaSource in Test := file("src/acceptance/scala")  а такжеscalaSource in Test := file("src/it/scala") вbuild.sbt файл получит эти пути для компиляции, когдаtest побежал.

Ваш ответ на вопрос