rest-assured - java.lang.NoClassDefFoundError : io/restassured/mapper/factory/GsonObjectMapperFactory

标签 rest-assured

当我尝试使用放心的框架执行脚本时出现错误。请指导我解决相同的问题。我用下面的 jar

Java version - 8
rest-assured-2.8.0
json-path-2.8.0
hamcrest-all-1.3
commons-lang3-3.0
json-schema-validator-2.2.0



>FAILED: foo
    java.lang.NoClassDefFoundError: io/restassured/mapper/factory/GsonObjectMapperFactory
        at io.restassured.config.RestAssuredConfig.<init>(RestAssuredConfig.java:41)
        at io.restassured.RestAssured.<clinit>(RestAssured.java:420)
        at practice.GetRequest.foo(GetRequest.java:12)
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
        at java.lang.reflect.Method.invoke(Unknown Source)
        at org.testng.internal.MethodInvocationHelper.invokeMethod(MethodInvocationHelper.java:108)
        at org.testng.internal.Invoker.invokeMethod(Invoker.java:661)
        at org.testng.internal.Invoker.invokeTestMethod(Invoker.java:869)
        at org.testng.internal.Invoker.invokeTestMethods(Invoker.java:1193)
        at org.testng.internal.TestMethodWorker.invokeTestMethods(TestMethodWorker.java:126)
        at org.testng.internal.TestMethodWorker.run(TestMethodWorker.java:109)
        at org.testng.TestRunner.privateRun(TestRunner.java:744)
        at org.testng.TestRunner.run(TestRunner.java:602)
        at org.testng.SuiteRunner.runTest(SuiteRunner.java:380)
        at org.testng.SuiteRunner.runSequentially(SuiteRunner.java:375)
        at org.testng.SuiteRunner.privateRun(SuiteRunner.java:340)
        at org.testng.SuiteRunner.run(SuiteRunner.java:289)
        at org.testng.SuiteRunnerWorker.runSuite(SuiteRunnerWorker.java:52)
        at org.testng.SuiteRunnerWorker.run(SuiteRunnerWorker.java:86)
        at org.testng.TestNG.runSuitesSequentially(TestNG.java:1301)
        at org.testng.TestNG.runSuitesLocally(TestNG.java:1226)
        at org.testng.TestNG.runSuites(TestNG.java:1144)
        at org.testng.TestNG.run(TestNG.java:1115)
        at org.testng.remote.AbstractRemoteTestNG.run(AbstractRemoteTestNG.java:132)
        at org.testng.remote.RemoteTestNG.initAndRun(RemoteTestNG.java:230)
        at org.testng.remote.RemoteTestNG.main(RemoteTestNG.java:76)
    Caused by: java.lang.ClassNotFoundException: io.restassured.mapper.factory.GsonObjectMapperFactory
        at java.net.URLClassLoader.findClass(Unknown Source)
        at java.lang.ClassLoader.loadClass(Unknown Source)
        at sun.misc.Launcher$AppClassLoader.loadClass(Unknown Source)
        at java.lang.ClassLoader.loadClass(Unknown Source)
        ... 28 more


    ===============================================
        Default test
        Tests run: 1, Failures: 1, Skips: 0
    ===============================================


    ===============================================
    Default suite
    Total tests run: 1, Failures: 1, Skips: 0
    ===============================================

最佳答案

根本原因是放心*ObjectMapperFactory包名称更改,例如在版本之间更改 3.x4.x .

对于在 release of rest-assured 4.0.0 之后遇到此问题的任何人,这个问题可能会出现在 Spring Boot 项目中 - 由 rest-assured 之间的版本不匹配引起。及其对 json-path 的传递依赖和 xml-pathspring-boot-dependencies bom .

如果指定依赖项 io.rest-assured:rest-assured:4.0.0 ,您还需要明确包含 io.rest-assured:json-path:4.0.0io.rest-assured:xml-path:4.0.0 ,否则 spring-boot-dependencies 将引入版本 3.1.1使用旧的 *ObjectMapperFactory 包名称。

关于rest-assured - java.lang.NoClassDefFoundError : io/restassured/mapper/factory/GsonObjectMapperFactory,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44993615/

相关文章:

java - 如何使用 Rest assured 验证数组中元素的正确值

rest - 重用模型类进行 API 测试有什么缺点?

RESTAssured 多部分内容类型

java - 有没有一种方法可以在没有特定顺序的情况下测试集合中的元素?

java - Post请求的响应体无法显示

java - REST 确保异步 - 找不到方法

java - then() 方法在 REST-assured 中做什么?

intellij-idea - 请放心,IntelliJ IDEA 中的 3.0.3 maven 依赖项不起作用

spring - Spring Boot 和 RestAssured 中的模拟 session

java - 将特定的 Json 键值插入从 Oracle DB 中提取的 Json 主体中