2016-08-10 4 views
0

Java과 함께 사용하려고합니다. 라우팅이 성공적으로 완료되고 실행됩니다. 하지만 JUnitRouteTest을 사용하여 테스트 케이스를 작성하려고하면 오류가 발생합니다.Akka HTTP Java : org.scalatest.Suite의 추상 메소드 yeOldeTestNames()를 오버라이드하지 않습니다.

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입니다. 또한 다음과 같이 스칼라 테스트 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을 사용하기 때문에 scalatest 종속성이 필요합니다. JUnitRouteTest을 사용합니다. 다음은 우리가 필요로하는 의존성입니다.

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

감사합니다. Harmeet! 이것은 내 문제를 해결했다. akka 2.4.10 및 메이븐이 필요합니다 \t \t \t org.scalatest \t \t scalatest_2.11 \t \t 3.0.0 \t \t \t 테스트를 \t \t