2016-08-10 8 views
0

Я собираюсь использовать akka-http с Java. Маршрутизация выполнена успешно и выполняется. Но когда я пытаюсь написать тестовый пример, используя JUnitRouteTest, у меня есть ошибка.Akka HTTP Java: не переопределять абстрактный метод yeOldeTestNames() в org.scalatest.Suite

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

Я следую за akka http route testkit documentation. Согласно этой документации, нам потребовалось только akka-http-testkit. Но для Java Мы также потребовали Junit depedency. С только junit зависимостью я получил другую ошибку cannot access org.scalatest.junit.JUnitSuiteLike. Я также инъекционные SCALA тест depedency, как показано ниже:

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" 
) 

Тогда я получил ошибку ниже:

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 

Как я мог решить эту проблему. Ниже мой код:

Маршрут Класс

public class PingPongApi { 

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

испытаний Класс

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"); 
} 
} 

ответ

1

Я нашел решение вышеуказанной проблемы. Основная проблема с нашими версиями зависимостей. Для выполнения тестовых примеров Java Routing нам потребовалась зависимость scalatest, потому что JUnitRouteTest с использованием scalatest. Ниже приведены требуемые зависимости.

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

Thanks Harmeet! это решило мою проблему. Для Акку 2.4.10 и Maven вам нужно: \t \t \t org.scalatest \t \t scalatest_2.11 \t \t 3.0.0 \t \t \t тест \t \t

 Смежные вопросы

  • Нет связанных вопросов^_^