2015-05-27 7 views
3

У меня есть приложение Play, которое определяет три различные конфигурации соединений в conf/reference.conf. Когда я запускаю модульные тесты, которые требуют использования FakeApplication, плагин BoneCP автоматически инициализирует эти три соединения, даже если в модульных тестах не вызываются какие-либо классы, которые используют любые подключения к базе данных. Он запускается и отключает соединения для каждого модульного теста. Это приводит к тому, что модульные тесты выполняются навсегда. Есть ли способ лениво начать подключения к базе данных в BoneCP, HikariCP или какой-либо другой диспетчер соединений, только открывая их, когда они впервые используются?Избегайте открытия неиспользуемых подключений к базе данных в Play

Я мог бы, конечно, полностью отключить BoneCPPlugin внутри соответствующих модульных тестов, но что делать, если у меня есть единичные тесты, которым нужна одна из конфигураций соединений?

+0

Если вам нужно подключение к базе данных, это _really_ единичный тест? – millhouse

+0

Вы правы, это интеграционный тест, а не единичный тест. Тем не менее, они сейчас используются в качестве модульных тестов, поэтому я ищу решение, пока мы не получим возможность переместить их в отдельный набор тестов интеграции. – Alex

+0

Кроме того, даже если мы отделим их как правильные тесты интеграции, мы все равно столкнемся с такими же проблемами производительности. – Alex

ответ

1

Для HikariCP просто установите initializationFailFast=false и minimumIdle=0.

+0

Я попытался добавить 'play.db.prototype.hikaricp.initializationFailFast = false' и' play.db.prototype.hikaricp.minimumIdle = 0' в 'application.conf', а также' initializationFailFast = false' и 'minimumIdle = 0 'to' reference.conf' внутри 'db. 'и хотя, кажется, ускоряет работу, он все же делает ненужные подключения к базам данных. При работе модульных тестов я вижу множество сообщений «_Creating Pool for datasource _». – Alex

+1

Если сообщение, которое вы получаете, это «Создание пула для источника данных », то это сообщение от Play. Я рекомендую просить в Play Google Group. – brettw