簡體   English   中英

java.lang.NoSuchMethodError Rest確保播放框架中的異常

[英]java.lang.NoSuchMethodError Rest Assured exception in play framework

嗨,我使用的是Play框架2.4.3和Scala 2.11版,我在使用放心的Scala支持來測試路線,但是我得到了

java.lang.NoSuchMethodError: org.hamcrest.Matcher.describeMismatch(Ljava/lang/Object;Lorg/hamcrest/Description;)V

經過研究后,我發現Junit在使用Hamcrest 1.3和JUnit 4.11的放心的Hamcrest匹配器NoSuchMethodError中引起問題,因為我使用的是播放框架,我認為默認情況下Junit附帶了它,這可能是問題所在,這是代碼

import io.restassured.RestAssured._
import io.restassured.RestAssured.when
import io.restassured.module.scala.RestAssuredSupport.AddThenToResponse
import io.restassured.matcher.RestAssuredMatchers._
import org.hamcrest.Matchers._
import org.scalatest._
import org.scalatest.FunSpec
import play.api.libs.json._

describe("user signed up")
  {
    it("user inserted to db after signup")
    {
      val json: JsValue = JsObject(Seq(
       "firstName" -> JsString("alice"),
       "lastName" -> JsString("bob"),
       "email" -> JsString("example@gmail.com"),
       "secondryEmail" -> JsString("example1@gmail.com"),
       "password" -> JsString("a@s**dasda_sds5")
    ))
      given()
      .port(9000)
      .contentType("application/json") 
      .body(json.toString())
     .when()
      .post("/direct-user/signup-processing")
     .Then()
       .statusCode(200)
       .body("status", equalTo(200)
           ,"msg", equalTo("Signup Successful"))
    }
  }

}

這是build.sbt文件的內容

libraryDependencies ++= Seq(filters, 
                "io.rest-assured" % "scala-support" % "3.0.6",
                "org.scalatest" %% "scalatest" % "2.2.6" % "test"withSources() withJavadoc(),
                "org.scalatestplus" %% "play" % "1.4.0-M3" % "test",
                "com.esotericsoftware.kryo" % "kryo" % "2.10",
                "org.mongodb" %% "casbah" % "2.8.0",
                "org.slf4j" % "slf4j-api" % "1.6.4",
                "org.elasticsearch" % "elasticsearch" % "1.6.0",
                "com.typesafe.akka" %% "akka-actor" % "2.3.6",
                "com.typesafe.akka" % "akka-testkit_2.11" % "2.3.6",
                "ch.qos.logback" % "logback-core" % "1.0.9",
                "com.github.nscala-time" %% "nscala-time" % "2.0.0",
                "com.hazelcast" % "hazelcast" % "3.5",
                "com.hazelcast" % "hazelcast-client" % "3.5",
                "com.twitter" % "chill-bijection_2.11" % "0.7.0",
                "com.github.slugify" % "slugify" % "2.1.3" ,
                "org.mindrot" % "jbcrypt" % "0.3m",
                "org.codehaus.groovy" % "groovy-all" % "2.4.0",
                "org.apache.lucene" % "lucene-expressions" % "4.10.4",
                "com.restfb" % "restfb" % "1.19.0",
                "org.twitter4j" % "twitter4j-core" % "4.0.0",
                "org.scribe" % "scribe" % "1.3.5",
                "com.google.code.gson" % "gson" % "2.6.2",
                "com.google.oauth-client" % "google-oauth-client" % "1.20.0",
                "com.google.api.client" % "google-api-client-auth-oauth2" % "1.2.0-alpha",
                "com.google.api-client" % "google-api-client" % "1.20.0",
                "com.google.http-client" % "google-http-client-jackson" % "1.20.0",
                "com.google.apis" % "google-api-services-oauth2" % "v2-rev120-1.20.0",
                "com.google.oauth-client" % "google-oauth-client-appengine" % "1.20.0",
                "com.google.oauth-client" % "google-oauth-client-java6" % "1.20.0",
                "com.google.oauth-client" % "google-oauth-client-jetty" % "1.20.0",
                "com.google.oauth-client" % "google-oauth-client-servlet" % "1.20.0",
                "com.google.apis" % "google-api-services-calendar" % "v3-rev120-1.19.1",
                "com.google.inject" % "guice" % "3.0")

這是異常日志

DirectUserSignUpTest:
[info] user signed up
[info] Exception encountered when attempting to run a suite with class name: endtoendtesting.directusertests.DirectUserSignUpTest *** ABORTED ***
[info]   java.lang.NoSuchMethodError: org.hamcrest.Matcher.describeMismatch(Ljava/lang/Object;Lorg/hamcrest/Description;)V
[info]   at io.restassured.internal.util.MatcherErrorMessageBuilder.buildError(MatcherErrorMessageBuilder.java:19)
[info]   at io.restassured.internal.util.MatcherErrorMessageBuilder$buildError.call(Unknown Source)
[info]   at org.codehaus.groovy.runtime.callsite.CallSiteArray.defaultCall(CallSiteArray.java:45)
[info]   at org.codehaus.groovy.runtime.callsite.AbstractCallSite.call(AbstractCallSite.java:108)
[info]   at org.codehaus.groovy.runtime.callsite.AbstractCallSite.call(AbstractCallSite.java:128)
[info]   at io.restassured.internal.ResponseSpecificationImpl$HamcrestAssertionClosure.validateStatusCodeAndStatusLine(ResponseSpecificationImpl.groovy:536)
[info]   at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
[info]   at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
[info]   at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
[info]   at java.lang.reflect.Method.invoke(Method.java:498)

請幫助導致異常的原因

將依賴項明確添加到Hamcrest

libraryDependencies ++= Seq(filters, 
    "org.hamcrest" % "hamcrest-core" % "1.3",
    "org.hamcrest" % "hamcrest-library" % "1.3",
    ...

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM