2017-05-17 4 views
1

TestNGでRest Assuredを使用してプロジェクトを作成しようとしていますが、java.lang.NoClassDefFoundError: org/hamcrest/TypeSafeMatcherで問題が発生しています。むしろこれに新しいので、どんな援助も感謝しています。クラスが見つかりません。org/hamcrest/TypeSafeMatcher

私はMavenを使用しています:

<dependencies> 
     <dependency> 
      <groupId>io.rest-assured</groupId> 
      <artifactId>rest-assured</artifactId> 
      <version>3.0.3</version> 
      <scope>test</scope> 
     </dependency> 
     <dependency> 
      <groupId>io.rest-assured</groupId> 
      <artifactId>json-schema-validator</artifactId> 
      <version>3.0.3</version> 
      <scope>test</scope> 
     </dependency> 
     <dependency> 
      <groupId>org.testng</groupId> 
      <artifactId>testng</artifactId> 
      <version>6.8</version> 
      <scope>test</scope> 
     </dependency> 
    </dependencies> 

スタックトレース:

java.lang.NoClassDefFoundError: org/hamcrest/TypeSafeMatcher 

    at java.lang.ClassLoader.defineClass1(Native Method) 
    at java.lang.ClassLoader.defineClass(ClassLoader.java:763) 
    at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:142) 
    at java.net.URLClassLoader.defineClass(URLClassLoader.java:467) 
    at java.net.URLClassLoader.access$100(URLClassLoader.java:73) 
    at java.net.URLClassLoader$1.run(URLClassLoader.java:368) 
    at java.net.URLClassLoader$1.run(URLClassLoader.java:362) 
    at java.security.AccessController.doPrivileged(Native Method) 
    at java.net.URLClassLoader.findClass(URLClassLoader.java:361) 
    at java.lang.ClassLoader.loadClass(ClassLoader.java:424) 
    at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:331) 
    at java.lang.ClassLoader.loadClass(ClassLoader.java:357) 
    at Tests.GameTests.GameTest.testGameSchema(GameTest.java:24) 
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) 
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) 
    at java.lang.reflect.Method.invoke(Method.java:498) 
    at org.testng.internal.MethodInvocationHelper.invokeMethod(MethodInvocationHelper.java:80) 
    at org.testng.internal.Invoker.invokeMethod(Invoker.java:714) 
    at org.testng.internal.Invoker.invokeTestMethod(Invoker.java:901) 
    at org.testng.internal.Invoker.invokeTestMethods(Invoker.java:1231) 
    at org.testng.internal.TestMethodWorker.invokeTestMethods(TestMethodWorker.java:127) 
    at org.testng.internal.TestMethodWorker.run(TestMethodWorker.java:111) 
    at org.testng.TestRunner.privateRun(TestRunner.java:767) 
    at org.testng.TestRunner.run(TestRunner.java:617) 
    at org.testng.SuiteRunner.runTest(SuiteRunner.java:334) 
    at org.testng.SuiteRunner.runSequentially(SuiteRunner.java:329) 
    at org.testng.SuiteRunner.privateRun(SuiteRunner.java:291) 
    at org.testng.SuiteRunner.run(SuiteRunner.java:240) 
    at org.testng.SuiteRunnerWorker.runSuite(SuiteRunnerWorker.java:52) 
    at org.testng.SuiteRunnerWorker.run(SuiteRunnerWorker.java:86) 
    at org.testng.TestNG.runSuitesSequentially(TestNG.java:1198) 
    at org.testng.TestNG.runSuitesLocally(TestNG.java:1123) 
    at org.testng.TestNG.run(TestNG.java:1031) 
    at org.testng.IDEARemoteTestNG.run(IDEARemoteTestNG.java:72) 
    at org.testng.RemoteTestNGStarter.main(RemoteTestNGStarter.java:127) 
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) 
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) 
    at java.lang.reflect.Method.invoke(Method.java:498) 
    at com.intellij.rt.execution.application.AppMain.main(AppMain.java:147) 
Caused by: java.lang.ClassNotFoundException: org.hamcrest.TypeSafeMatcher 
    at java.net.URLClassLoader.findClass(URLClassLoader.java:381) 
    at java.lang.ClassLoader.loadClass(ClassLoader.java:424) 
    at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:331) 
    at java.lang.ClassLoader.loadClass(ClassLoader.java:357) 
    ... 41 more 

Maven Dependencies

package Tests.GameTests; 

import Tests.TestModel; 
import com.github.fge.jsonschema.cfg.ValidationConfiguration; 
import com.github.fge.jsonschema.main.JsonSchemaFactory; 
import org.testng.annotations.Test; 

import static com.github.fge.jsonschema.SchemaVersion.DRAFTV4; 
import static io.restassured.RestAssured.when; 
import static io.restassured.module.jsv.JsonSchemaValidator.matchesJsonSchemaInClasspath; 

public class GameTest extends TestModel { 

    @Test 
    public void testGameSchema() { 
     JsonSchemaFactory jsonSchemaFactory = JsonSchemaFactory.newBuilder(). 
      setValidationConfiguration(ValidationConfiguration. 
      newBuilder(). 
      setDefaultVersion(DRAFTV4).freeze()).freeze(); 

     when(). 
      get("/games/114"). 
      then(). 
      assertThat(). 
      body(matchesJsonSchemaInClasspath("game_schema.json"). 
        using(jsonSchemaFactory)); 
    } 
} 
+0

はまた、あなたの 'testng'ファイルを投稿することができます含まれて、私は間違っがあると思い、あなたが与えなければなりません'org/hamcrest/TypeSafeMatcher'の代わりに' org.hamcrest.TypeSafeMatcher'としてのクラス名 –

+0

@SaradaAkurathiは、下の完全なテストファイルで投稿を更新しました。 –

答えて

2

を明示的にあなたのポンポンでhamcrest依存関係を追加することができます。

<dependency> 
    <groupId>org.hamcrest</groupId> 
    <artifactId>hamcrest-all</artifactId> 
    <version>1.3</version> 
</dependency> 

私はhamcrestで数回同様の問題に直面し、それが明示的にいつも助け追加しました。

+0

が素晴らしいです。明示的に依存関係を差し込み、テストが実行されます。私は今テストメソッドをクリーンアップする必要があります。 –

0

私はTestNGの代わりにJUnitを使用している点を除いて全く同じエラーが発生しました。それは元のポスターを助けるものではありませんが、私のような人がいると思いました。

受け入れ答えは私のために働いていなかったが、私は私のPOMでJUnitの前に休憩アシュアード依存関係を置くこと(私は休憩がJUnitの後アシュアードていた)問題解決ことが判明:

<dependencies> 
    <!-- Other dependencies... --> 
    <!-- Add dependency for Rest Assured (has to go before JUnit to work) --> 
    <dependency> 
     <groupId>io.rest-assured</groupId> 
     <artifactId>rest-assured</artifactId> 
     <version>3.0.6</version> 
     <scope>test</scope> 
    </dependency> 
    <dependency> 
     <groupId>junit</groupId> 
     <artifactId>junit</artifactId> 
     <version>4.10</version> 
     <scope>test</scope> 
    </dependency> 
    <!-- Other dependencies... --> 
</dependencies> 

出典:https://github.com/rest-assured/rest-assured/wiki/GettingStarted#maven--gradle-users

ノート

  1. あなたが残り、安心のJUnit DEPEの前に配置する必要がありHamcrestの正しいバージョンが使用されていることを確認するために、pom.xml/build.gradleのndency宣言を使用してください。アシュアード
  2. RESTはJsonPathとXmlPathとして推移的な依存

(強調は私です)

関連する問題