2016-08-10 5 views
0

Ich werde akka-http mit Java verwenden. Das Routing wurde erfolgreich ausgeführt und ausgeführt. Aber wenn ich versuche, Testfall mit JUnitRouteTest zu schreiben, habe ich einen Fehler bekommen.Akka HTTP Java: Überschreiben Sie die abstrakte Methode yeOldeTestNames() nicht in org.scalatest.Suite

com.james.controllers.PingPongApiTest is not abstract and does not override abstract method yeOldeTestNames() in org.scalatest.Suite 

Ich folge akka http route testkit documentation. Gemäß dieser Dokumentation benötigten wir nur akka-http-testkit. Aber für Java Wir auch benötigt Junit Abhängigkeit. Mit nur Junit-Abhängigkeit habe ich einen anderen Fehler ist cannot access org.scalatest.junit.JUnitSuiteLike. Ich bin auch scala Test depedency injizieren, wie unten:

libraryDependencies ++= Seq(
"com.typesafe.akka" % "akka-http-experimental_2.11" % "2.4.8", 
"com.typesafe.akka" % "akka-http-testkit_2.11" % "2.4.8" % "test", 
"junit" % "junit" % "4.12" % "test", 
"org.scalatest" % "scalatest_2.11" % "3.0.0" % "test" 
) 

Dann habe ich den folgenden Fehler:

com.james.controllers.PingPongApiTest is not abstract and does not override abstract method yeOldeTestNames() in org.scalatest.Suite 
[error] public class PingPongApiTest extends JUnitRouteTest { 
[error]  TestRoute route = testRoute(new PingPongApi().handleGetPingRequest()); 
[error] 
[error]  @Test 
[error]  public void testGetPingRequest() { 
[error] 
[error]   route.run(HttpRequest.GET("/ping")) 
[error]     .assertStatusCode(StatusCodes.OK) 
[error]     .assertEntity("pong"); 
[error]  } 
[error] } 
[error] (test:compileIncremental) javac returned nonzero exit code 
[error] Total time: 1 s, completed 10 Aug, 2016 11:28:11 AM 

Wie konnte ich das Problem lösen. Im Anschluss ist mein Code:

Routenklasse

public class PingPongApi { 

public Route handleGetPingRequest() { 
    return get(() -> route(
      path("ping",() -> complete("pong")) 
    )); 
} 
} 

Testklasse

public class PingPongApiTest extends JUnitRouteTest { 
TestRoute route = testRoute(new PingPongApi().handleGetPingRequest()); 

@Test 
public void testGetPingRequest() { 

    route.run(HttpRequest.GET("/ping")) 
      .assertStatusCode(StatusCodes.OK) 
      .assertEntity("pong"); 
} 
} 

Antwort

1

ich die Lösung für obiges Problem gefunden. Das Hauptproblem mit unseren Versionsversionen. Zum Ausführen von Java Routing-Testfällen benötigten wir scalatest Abhängigkeit, weil JUnitRouteTestscalatest verwenden. Im Folgenden sind die Abhängigkeiten aufgeführt, die wir benötigen.

libraryDependencies ++= Seq(
"com.typesafe.akka" % "akka-http-experimental_2.11" % "2.4.8", 
"com.typesafe.akka" % "akka-http-testkit_2.11" % "2.4.8" % "test", 
"org.scalatest" %% "scalatest" % "2.2.4" % "test", 
"junit" % "junit" % "4.12" % "test", 
"com.novocode" % "junit-interface" % "0.11" % "test" exclude("junit", "junit") 
) 
+1

Dank Harmeet! Das hat mein Problem gelöst. Für akka 2.4.10 und maven Sie brauchen: \t \t \t org.scalatest \t \t scalatest_2.11 \t \t 3.0.0 \t \t \t Test \t \t

Verwandte Themen