2015-06-03 1 views
0

У меня есть проект с некоторыми подпроектами. Один из подпроектов нуждается в JDBC, поэтому BoneCP (он получил доступ к MySQL DB).Play 2.3.x: Multiproject, disable BoneCP

С другой стороны, корневой проект вообще не нужен JDBC.

Моя проблема: JDBC указан в build.sbt подпроекта. Когда я запускаю все тесты, и в этом случае инициализируются корневые тесты проекта, BoneCP, даже если это необходимо только в подпроекте. Это приносит мне какие-то проблемы во время тестирования:

Configuration error[Cannot connect to database [default]] (Configuration.scala:94) 

Могу ли я указать Play только использовать JDBC с подпроекта? Или я могу отключить JDBC или BoneCP в корневом проекте?

Спасибо за ваши ответы.

+0

Можете ли вы прокомментировать свои тесты, это просто модульные тесты или интеграционные тесты? Некоторые из них нуждаются в BoneCP – Barry

+0

Да, некоторые из них - Unit -> вообще не нужны BoneCP или JDBC. Некоторые другие являются интеграцией и нуждаются в JDBC. Модуль находится в корневом проекте, интеграция (с JDBC) находится в подпроекте. Полезные ссылки для меня: https://www.playframework.com/documentation/2.1.0/SBTSubProjects https://github.com/josh-padnick/play-multiproject-template – buzz2buzz

ответ

0

Наконец получить его!

val withoutPlugins = Seq(classOf[ReactiveMongoPlugin].getName) Работает как очарование для отключения плагина ReactiveMongo.

И главная проблема: additionalConfiguration = Map("dbplugin" -> "disabled", "evolutionplugin" -> "disabled")

Нет JDBC на все время испытаний. Большое спасибо Барри!

+0

Удивительно, что вы получили его! – Barry

0

Для тестов модуля я бы сказал, создайте объект утилиты тестирования, который предоставляет общий FakeApplication. Затем вы можете повторно использовать этот FakeApp в своих модульных тестах. Один из аргументов конструктора для FakeApplication - это noPlugins, который вы можете использовать для отключения плагинов во время модульного тестирования.

Например, в текущем приложении Play мы используем ReactiveMongo, но не хотим этого в модульном тестировании.

object MockMyApp extends OurBaseSpec { 
val withoutPlugins = Seq(classOf[ReactiveMongoPlugin].getName) 
val appWithoutIntegrations = FakeApplication(withoutPlugins = withoutPlugins) 
} 

Мы тогда ссылаться на этот MockMyApp.appWithoutIntegrations при создании новых приложений для модульного тестирования. Вы также можете указать дополнительную конфигурацию среди других параметров при создании FakeApp.

С несколько ссылок, я думаю, вы могли бы искать дополнительной конфигурации для установки при создании FakeApp:

dbplugin=disabled 

Answer where above configuration was reason dbplugin wasn't working

Instructions for configuring alternate connection pool look at step#2

val disabledDbConfig = Map("dbplugin"->"disabled") 
    val appWithoutIntegrations = FakeApplication(additionalConfiguration = disabledDbConfig) 
+0

Привет, кажется, работает для Плагин ReactiveMongo.Но для dbplugin я получил это: «на данный момент должен быть подключен плагин базы данных, но похоже, что он недоступен, поэтому эволюция не будет работать. Пожалуйста, убедитесь, что вы правильно зарегистрировали плагин db' – buzz2buzz