Если у кого-то есть лучшее предложение, пожалуйста, улучшите этот ответ! Я боролся в течение нескольких месяцев.

ого, чтобы база данных была доступной в масштабе с эволюцией, я использую это расширение по умолчаниюPlaySpec вдохновленныйэтот ТАК вопрос:

trait ResetDbSpec extends PlaySpec with BeforeAndAfterAll {
  lazy val appBuilder = new GuiceApplicationBuilder()
  lazy val injector = appBuilder.injector()
  lazy val databaseApi = injector.instanceOf[DBApi]

  override def beforeAll() = {
    Evolutions.applyEvolutions(databaseApi.database("default"))
  }

  override def afterAll() = {
    Evolutions.cleanupEvolutions(databaseApi.database("default"))
    databaseApi.database("default").shutdown()
  }
}

Он применяет эволюцию базы данных при запуске пакета и отменяет его при завершении пакета. Тест выглядит так

class ProjectsSpec extends ResetDbSpec with OneAppPerSuite { ...

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

com.mysql.jdbc.exceptions.jdbc4.MySQLNonTransientConnectionException: источник данных отклонил установление соединения, сообщение от сервера: «Слишком много соединений»

Как видно из приведенного выше кода, я попытался добавить строку

databaseApi.database("default").shutdown()

вafterAll() чтобы смягчить это, но это не имело никакого эффекта. Я пытался не запускать тесты параллельно, но и безрезультатно. Где я открываю соединения БД, не закрывая их, и куда мне звонитьshutdown()?

Нотабене Я использую Play 2.5.10 и Slick 3.1.

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

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