title: How to start Play application before tests and then shut it down in specs2?
body: <p>My goal is to get an application running and execute multiple tests on the same instance of the app.</p>
  
  <p>I have tried <a href="https://stackoverflow.com/questions/12028218/running-multiple-tests-within-the-same-fakeapplication-in-play-2-0-scala">this solution</a> without much luck. Here is my test:</p>
  
  <pre class="lang-scala prettyprint-override"><code>class ApplicationSpec extends Specification { sequential
  
  
    object AppWithTestDb2 extends FakeApplication(additionalConfiguration = 
      Map(
      ("db.default.driver") -&gt; "org.h2.Driver",
      ("db.default.url") -&gt; (
  //        "jdbc:h2:mem:play-test-" + scala.util.Random.nextInt +      // in memory database 
          "jdbc:h2:/tmp/play-test-" + scala.util.Random.nextInt +     // file based db that can be accessed using h2-browse in activator
          ";MODE=PostgreSQL;DATABASE_TO_UPPER=false;DB_CLOSE_DELAY=-1")
      ))
  
      running(AppWithTestDb2) {
  
        "Application" should {
  
          "send 404 on a bad request" in {
            route(FakeRequest(GET, "/boum")) must beNone
          }
  
          "post signup request" in {
            val res = route(FakeRequest(POST, "/user", FakeHeaders(), TestData.newUser)).get
                    status(res) must equalTo(OK)
                    contentType(res) must beSome("application/json")
                    contentAsJson(res) mustEqual TestData.newUser
          }
  
          "fail signup request for existing user" in {
            val res1 = route(FakeRequest(POST, "/user", FakeHeaders(), TestData.newUser)).get
                    Await.result(res1, Duration.Inf)
                    val res = route(FakeRequest(POST, "/user", FakeHeaders(), TestData.newUser)).get
                    Await.result(res, Duration.Inf)
                    status(res) must equalTo(CONFLICT)
                    contentType(res) must beSome("application/json")
                    contentAsJson(res) mustEqual TestData.newUser
          }
  
      }
    }
  
  }
  </code></pre>
  
  <p>The problem here is that application starts and stops immediately and tests are executed without a running application:</p>
  
  <pre><code>[debug] c.j.b.BoneCPDataSource - JDBC URL = jdbc:h2:/tmp/play-test--437407884;MODE=PostgreSQL;DATABASE_TO_UPPER=false;DB_CLOSE_DELAY=-1, Username = zalando, partitions = 1, max (per partition) = 30, min (per partition) = 5, idle max age = 10 min, idle test period = 1 min, strategy = DEFAULT
  [info] application - Application has started
  [debug] application - Binding to Slick DAO implementations.
  [info] application - Application shutdown...
  [debug] c.j.b.BoneCPDataSource - Connection pool has been shut down
  [info] ApplicationSpec
  [info] 
  [info] Application should
  [info] ! send 404 on a bad request
  [error]    RuntimeException: : There is no started application  (Play.scala:71)
  [error] play.api.Play$$anonfun$current$1.apply(Play.scala:71)
  [error] play.api.Play$$anonfun$current$1.apply(Play.scala:71)
  [error] play.api.Play$.current(Play.scala:71)
  [error] play.api.test.RouteInvokers$class.route(Helpers.scala:305)
  [error] play.api.test.Helpers$.route(Helpers.scala:403)
  [error] ApplicationSpec$$anonfun$1$$anonfun$apply$7$$anonfun$apply$8$$anonfun$apply$9.apply(ApplicationSpec.scala:76)
  [error] ApplicationSpec$$anonfun$1$$anonfun$apply$7$$anonfun$apply$8$$anonfun$apply$9.apply(ApplicationSpec.scala:76)
  [error] ApplicationSpec$$anonfun$1$$anonfun$apply$7$$anonfun$apply$8.apply(ApplicationSpec.scala:76)
  [error] ApplicationSpec$$anonfun$1$$anonfun$apply$7$$anonfun$apply$8.apply(ApplicationSpec.scala:76)
  </code></pre>