2016-04-15 9 views
2

Ich habe es geschafft, Gurken-Scala auf einem Play/Scala laufen zu lassen. Jetzt möchte ich die gesamte Play-Anwendung ausführen, damit ich etwas wie Selenium verwenden kann, um meine Anwendung zu testen.Gurken-Scala und Play Framework Integrationstests

Meine Aktuelle Versuche haben mich

val app = new FakeApplication() 
val port = 3333 

    lazy val browser: TestBrowser = TestBrowser.of(webDriverClass, Some("http://localhost:" + port)) 
    lazy val server = TestServer(port, app) 

Natürlich dieses FakeApplication führen() wird nicht in irgendeiner Weise konfiguriert ... Bin ich näher dies falsch? Diese Anwendung ist auch Multi-Modul und Idealerweise würde Ich mag die Funktionstests pro Modul laufen haben (Ausgabe vom Baum siehe unten)

├── README.md 
├── build.sbt 
├── conf 
│   ├── application.conf 
│   └── routes 
├── logs 
│   └── application.log 
├── modules 
│   ├── module1 
│   │   ├── app 
│   │   ├── conf 
│   │   ├── target 
│   │   └── test 
│   └── module2 
│    ├── app 
│    ├── conf 
│    └── target 
└── project 
   ├── build.properties 
   ├── plugins.sbt 
   ├── project 
   │   └── target 
   └── target 
    ├── config-classes 
    ├── resolution-cache 
    ├── scala-2.10 
    └── streams 

Ich bin mir bewusst, dass das Spiel eine Selen Integration hat, die verwendet werden kann, um meine Fahrt Tests. Ich habe jedoch eine Geschäftsanforderung für Feature-Dateien, da diese als Berichtmechanismus verwendet werden. Ich bin nicht unbedingt an Gurke gebunden, wenn jemand eine Möglichkeit kennt, browserbasierte Tests mit Feature-Dateien durchzuführen, die auch für mich akzeptabel wären?

Danke,

Ben

Update:

ich durch IntelliJ ausgeführt wurde, die einen Server verursacht keine Strecken oder irgendetwas vorgesehen laufen. Ich nehme an, dies ist, weil es mit einer leeren Standardanwendung ausgeführt wird.

jedoch Wenn durch sbt test läuft ich folgende Ausgabe:

Verursacht durch: com.google.inject.ProvisionException: Kann nicht Bereitstellung finden Sie die folgenden Fehler:

1) Error in custom provider, Configuration error: Configuration error[Router not found: admin.Routes] 
    while locating play.api.inject.guice.FakeRouterProvider 
    while locating play.api.routing.Router 
    for parameter 0 at play.api.http.JavaCompatibleHttpRequestHandler.<init>(HttpRequestHandler.scala:200) 
    while locating play.api.http.JavaCompatibleHttpRequestHandler 
    while locating play.api.http.HttpRequestHandler 
    for parameter 4 at play.api.DefaultApplication.<init>(Application.scala:221) 
    at play.api.DefaultApplication.class(Application.scala:221) 
    while locating play.api.DefaultApplication 
    while locating play.api.Application 
+0

"Ich habe Schwierigkeiten, die Anwendung zu starten" - welche Probleme sehen Sie genau, Fehler beim Ausführen der Tests? Können Sie uns Ihren vollständigen Code zeigen? Wo nennen Sie zum Beispiel 'server.start()'? –

+0

@ SébastienLeCallonnec Sorry, ich sollte klären. Ich kann die Anwendung starten, aber es gibt keine Routen oder irgendetwas konfiguriert. –

Antwort

0

Wenn Sie die Standardkonfigurationseinstellungen für IntegrationTest in sbt verwenden und ScalaTestPlusPlay, hier sind die Verzeichnisse verwendet werden:

src/it/scala  – scala IT code 
src/it/java  – java IT code 
src/it/resources – resources, including configuration 

Platzieren Sie Ihre application.conf und Dateien im Ressourcenverzeichnis und FakeApplication wird es abholen. Sie können die Pfade in Ihrem sbt-Skript auch an einem anderen Ort festlegen.

Wenn alle Ihrer Entwicklung/Integration Prüfmaschinen sind Unix-artige und Sie git für VC, können Sie ein relativ Symlink verwenden Ihre reale Route-Datei.

Für Windows oder andere VCS müssen Sie wahrscheinlich die routes-Datei kopieren und doppelte Wartung durchführen.

 

symlink einen relativen Pfad zum ursprünglichen, z.B. ../../../conf/routes verwenden.

+0

'ScalaTestPlusPlay' ist wahrscheinlich nicht erforderlich, aber es integriert die Selen-Unterstützung von ScalaTest gut mit Play. – WeaponsGrade