Tec*_*k49 2 java intellij-idea gradle rest-assured rest-assured-jsonpath
我正在尝试运行Cucumber测试用例场景,并在IntelliJ-IDEA. 我已将文件发布build.gradle在这里。我不知道为什么我一运行程序就收到此错误。有人可以告诉我如何解决这个问题吗?我已经收到此错误一天多了,但仍然没有解决方案。
错误堆栈跟踪
\njava.lang.NoClassDefFoundError: io/restassured/path/xml/mapper/factory/JAXBObjectMapperFactory\n at io.restassured.config.RestAssuredConfig.<init>(RestAssuredConfig.java:41)\n at io.restassured.RestAssured.<clinit>(RestAssured.java:420)\n at AbtMainTestControl.PostJsonDetail.postJsonPayload(PostJsonDetail.java:17)\n at AbtMainTestControl.AbtCardPavTest.first_PAV_is_Transact(AbtCardPavTest.java:110)\n\nCaused by: java.lang.ClassNotFoundException: io.restassured.path.xml.mapper.factory.JAXBObjectMapperFactory\n at java.net.URLClassLoader.findClass(URLClassLoader.java:382)\n at java.lang.ClassLoader.loadClass(ClassLoader.java:418)\n at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:355)\n at java.lang.ClassLoader.loadClass(ClassLoader.java:351)\n at io.restassured.config.RestAssuredConfig.<init>(RestAssuredConfig.java:41)\n at io.restassured.RestAssured.<clinit>(RestAssured.java:420)\n at AbtMainTestControl.PostJsonDetail.postJsonPayload(PostJsonDetail.java:17)\n at AbtMainTestControl.AbtCardPavTest.first_PAV_is_Transact(AbtCardPavTest.java:110)\n at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)\n at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)\n at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)\n at java.lang.reflect.Method.invoke(Method.java:498)\n at cucumber.runtime.Utils$1.call(Utils.java:26)\n at cucumber.runtime.Timeout.timeout(Timeout.java:16)\n at cucumber.runtime.Utils.invoke(Utils.java:20)\n at cucumber.runtime.java.JavaStepDefinition.execute(JavaStepDefinition.java:57)\n at cucumber.runner.PickleStepDefinitionMatch.runStep(PickleStepDefinitionMatch.java:50)\n at cucumber.runner.TestStep.executeStep(TestStep.java:65)\n at cucumber.runner.TestStep.run(TestStep.java:50)\n at cucumber.runner.PickleStepTestStep.run(PickleStepTestStep.java:43)\n at cucumber.runner.TestCase.run(TestCase.java:46)\n at cucumber.runner.Runner.runPickle(Runner.java:50)\n at cucumber.runtime.Runtime$1.run(Runtime.java:104)\n at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511)\n at java.util.concurrent.FutureTask.run(FutureTask.java:266)\n at cucumber.runtime.Runtime$SameThreadExecutorService.execute(Runtime.java:258)\n at java.util.concurrent.AbstractExecutorService.submit(AbstractExecutorService.java:112)\n at cucumber.runtime.Runtime.run(Runtime.java:101)\n at io.cucumber.core.cli.Main.run(Main.java:43)\n at io.cucumber.core.cli.Main.main(Main.java:14)\n\n\njava.lang.NoClassDefFoundError: Could not initialize class io.restassured.RestAssured\n at AbtMainTestControl.PostJsonDetail.postJsonPayload(PostJsonDetail.java:17)\n at AbtMainTestControl.AbtCardPavTest.first_PAV_is_Transact(AbtCardPavTest.java:110)\n at \xe2\x9c\xbd.First PAV is \n\njava.lang.NoClassDefFoundError: io/restassured/path/xml/mapper/factory/JAXBObjectMapperFactory\n at io.restassured.config.RestAssuredConfig.<init>(RestAssuredConfig.java:41)\n at io.restassured.RestAssured.<clinit>(RestAssured.java:420)\n at AbtMainTestControl.PostJsonDetail.postJsonPayload(PostJsonDetail.java:17)\n at AbtMainTestControl.AbtCardPavTest.first_PAV_is_Transact(AbtCardPavTest.java:110)\n at \xe2\x9c\xbd.First PAV is Transact(file:/C:/Users/lukegoh/Documents/GitHub/AbtMainTestControl/AbtMainTestControl/src/test/resources/features/AbtCardPAVTest.feature:10)\nCaused by: java.lang.ClassNotFoundException: io.restassured.path.xml.mapper.factory.JAXBObjectMapperFactory\n at java.net.URLClassLoader.findClass(URLClassLoader.java:382)\n at java.lang.ClassLoader.loadClass(ClassLoader.java:418)\n at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:355)\n at java.lang.ClassLoader.loadClass(ClassLoader.java:351)\n at io.restassured.config.RestAssuredConfig.<init>(RestAssuredConfig.java:41)\n at io.restassured.RestAssured.<clinit>(RestAssured.java:420)\n at AbtMainTestControl.PostJsonDetail.postJsonPayload(PostJsonDetail.java:17)\n at AbtMainTestControl.AbtCardPavTest.first_PAV_is_Transact(AbtCardPavTest.java:110)\n at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)\n at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)\n at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)\n at java.lang.reflect.Method.invoke(Method.java:498)\n at cucumber.runtime.Utils$1.call(Utils.java:26)\n at cucumber.runtime.Timeout.timeout(Timeout.java:16)\n at cucumber.runtime.Utils.invoke(Utils.java:20)\n at cucumber.runtime.java.JavaStepDefinition.execute(JavaStepDefinition.java:57)\n at cucumber.runner.PickleStepDefinitionMatch.runStep(PickleStepDefinitionMatch.java:50)\n at cucumber.runner.TestStep.executeStep(TestStep.java:65)\n at cucumber.runner.TestStep.run(TestStep.java:50)\n at cucumber.runner.PickleStepTestStep.run(PickleStepTestStep.java:43)\n at cucumber.runner.TestCase.run(TestCase.java:46)\n at cucumber.runner.Runner.runPickle(Runner.java:50)\n at cucumber.runtime.Runtime$1.run(Runtime.java:104)\n at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511)\n at java.util.concurrent.FutureTask.run(FutureTask.java:266)\n at cucumber.runtime.Runtime$SameThreadExecutorService.execute(Runtime.java:258)\n at java.util.concurrent.AbstractExecutorService.submit(AbstractExecutorService.java:112)\n at cucumber.runtime.Runtime.run(Runtime.java:101)\n at io.cucumber.core.cli.Main.run(Main.java:43)\n at io.cucumber.core.cli.Main.main(Main.java:14)\n\njava.lang.NoClassDefFoundError: Could not initialize class io.restassured.RestAssured\n at AbtMainTestControl.PostJsonDetail.postJsonPayload(PostJsonDetail.java:17)\n at AbtMainTestControl.AbtCardPavTest.first_PAV_is_Transact(AbtCardPavTest.java:110)\n at \xe2\x9c\xbd.First PAV is Transact(file:/C:/Users/lukegoh/Documents/GitHub/AbtMainTestControl/AbtMainTestControl/src/test/resources/features/AbtCardPAVTest.feature:10)\n\n\nProcess finished with exit code 1\nRun Code Online (Sandbox Code Playgroud)\n构建.gradle
\nplugins {\n id 'org.springframework.boot' version '2.3.4.RELEASE'\n}\n\napply plugin: 'java'\napply plugin: 'io.spring.dependency-management'\napply plugin: 'maven-publish'\n\n\nsourceCompatibility = 1.8\ntargetCompatibility = 1.8\n\n\ngroup 'AbtMainTestControl'\nversion '1.0-SNAPSHOT'\n\n// Versioning of dependencies\nwrapper.gradleVersion = '6.6.1'\ndef cucumberVersion = '4.7.1'\ndef junitVersion = '5.5.0'\ndef restVersion = '4.1.2'\ndef apacheDrillVersion = '1.17.0'\n\n\n\nrepositories {\n jcenter()\n mavenCentral()\n}\n\n\ndependencies {\n compile group: 'org.codehaus.jackson', name: 'jackson-core-asl', version: '1.9.13'\n compile group: 'com.opencsv', name: 'opencsv', version: '4.0'\n\n compile group: 'org.apache.httpcomponents', name: 'httpclient', version: '4.5.12'\n\n compile group: 'org.apache.drill.tools', name: 'tools-parent', version: "${apacheDrillVersion}", ext: 'pom'\n\n compile group: 'de.monochromata.cucumber', name: 'reporting-plugin', version: '3.0.9'\n \n testCompile group: 'com.microsoft.sqlserver', name: 'mssql-jdbc', version: '6.1.0.jre8'\n\n compile group: 'org.apache.commons', name: 'commons-dbcp2', version: '2.7.0'\n\n compile 'org.modelmapper:modelmapper:2.3.3'\n\n implementation('org.springframework.boot:spring-boot-starter-web')\n implementation('org.springframework.boot:spring-boot-starter-data-jpa')\n \n testImplementation "io.cucumber:cucumber-java:${cucumberVersion}"\n testImplementation "io.cucumber:cucumber-junit:${cucumberVersion}"\n testImplementation "io.rest-assured:rest-assured:${restVersion}"\n testImplementation "io.rest-assured:json-path:${restVersion}"\n testImplementation "io.rest-assured:json-schema-validator:${restVersion}"\n\n testImplementation "org.junit.jupiter:junit-jupiter-api:${junitVersion}"\n testRuntimeOnly "org.junit.jupiter:junit-jupiter-engine:${junitVersion}"\n testRuntimeOnly "org.junit.vintage:junit-vintage-engine:${junitVersion}"\n implementation 'junit:junit:4.12'\n\n compileOnly 'org.projectlombok:lombok:1.18.12'\n annotationProcessor 'org.projectlombok:lombok:1.18.12'\n\n testCompileOnly 'org.projectlombok:lombok:1.18.12'\n testAnnotationProcessor 'org.projectlombok:lombok:1.18.12'\n\n implementation 'org.mapstruct:mapstruct:1.4.1.Final'\n annotationProcessor 'org.mapstruct:mapstruct-processor:1.4.1.Final'\n\n compile group: 'org.hibernate', name: 'hibernate-gradle-plugin', version: '5.4.22.Final'\n}\n\n\nconfigurations {\n cucumberRuntime {\n extendsFrom testImplementation\n }\n}\n\ntask cucumber() {\n dependsOn assemble, compileTestJava\n doLast {\n javaexec {\n main = "io.cucumber.core.cli.Main"\n classpath = configurations.cucumberRuntime + sourceSets.main.output + sourceSets.test.output\n args = ['--plugin',\n 'pretty',\n '--glue',\n 'gradle.cucumber',\n 'src/test/resources/features',\n\n ]\n }\n }\n}\n\n\ntest {\n //useJUnitPlatform()\n systemProperty "cucumber.options", System.properties.getProperty("cucumber.options")\n}\nRun Code Online (Sandbox Code Playgroud)\n注意:我已经删除了错误的多余部分。
\n我已经通过在文件中java.lang.NoClassDefFoundError: io/restassured/path/xml/mapper/factory/JAXBObjectMapperFactory显式声明json-pathand解决了该错误。xml-pathbuild.gradle
我是这样声明的。
构建.gradle
plugins {
id 'org.springframework.boot' version '2.3.4.RELEASE'
}
apply plugin: 'java'
apply plugin: 'io.spring.dependency-management'
apply plugin: 'maven-publish'
sourceCompatibility = 1.8
targetCompatibility = 1.8
group 'AbtMainTestControl'
version '1.0-SNAPSHOT'
// Versioning of dependencies
wrapper.gradleVersion = '6.6.1'
def cucumberVersion = '4.7.1'
def junitVersion = '5.5.0'
def restVersion = '4.1.2'
def apacheDrillVersion = '1.17.0'
repositories {
jcenter()
mavenCentral()
}
dependencies {
compile group: 'org.codehaus.jackson', name: 'jackson-core-asl', version: '1.9.13'
compile group: 'com.opencsv', name: 'opencsv', version: '4.0'
compile group: 'org.apache.httpcomponents', name: 'httpclient', version: '4.5.12'
compile group: 'org.apache.drill.tools', name: 'tools-parent', version: "${apacheDrillVersion}", ext: 'pom'
compile group: 'de.monochromata.cucumber', name: 'reporting-plugin', version: '3.0.9'
testCompile group: 'com.microsoft.sqlserver', name: 'mssql-jdbc', version: '6.1.0.jre8'
compile group: 'org.apache.commons', name: 'commons-dbcp2', version: '2.7.0'
compile 'org.modelmapper:modelmapper:2.3.3'
implementation('org.springframework.boot:spring-boot-starter-web')
implementation('org.springframework.boot:spring-boot-starter-data-jpa')
testImplementation "io.cucumber:cucumber-java:${cucumberVersion}"
testImplementation "io.cucumber:cucumber-junit:${cucumberVersion}"
testImplementation "io.rest-assured:rest-assured:${restVersion}"
testImplementation "io.rest-assured:json-path:${restVersion}"
testImplementation "io.rest-assured:xml-path:${restVersion}"
testImplementation "io.rest-assured:json-schema-validator:${restVersion}"
testImplementation "org.junit.jupiter:junit-jupiter-api:${junitVersion}"
testRuntimeOnly "org.junit.jupiter:junit-jupiter-engine:${junitVersion}"
testRuntimeOnly "org.junit.vintage:junit-vintage-engine:${junitVersion}"
implementation 'junit:junit:4.12'
compileOnly 'org.projectlombok:lombok:1.18.12'
annotationProcessor 'org.projectlombok:lombok:1.18.12'
testCompileOnly 'org.projectlombok:lombok:1.18.12'
testAnnotationProcessor 'org.projectlombok:lombok:1.18.12'
implementation 'org.mapstruct:mapstruct:1.4.1.Final'
annotationProcessor 'org.mapstruct:mapstruct-processor:1.4.1.Final'
compile group: 'org.hibernate', name: 'hibernate-gradle-plugin', version: '5.4.22.Final'
}
configurations {
cucumberRuntime {
extendsFrom testImplementation
}
}
task cucumber() {
dependsOn assemble, compileTestJava
doLast {
javaexec {
main = "io.cucumber.core.cli.Main"
classpath = configurations.cucumberRuntime + sourceSets.main.output + sourceSets.test.output
args = ['--plugin',
'pretty',
'--glue',
'gradle.cucumber',
'src/test/resources/features',
]
}
}
}
test {
//useJUnitPlatform()
systemProperty "cucumber.options", System.properties.getProperty("cucumber.options")
}
Run Code Online (Sandbox Code Playgroud)
RESTAssured 依赖关系声明(续)
testImplementation "io.rest-assured:rest-assured:${restVersion}"
testImplementation "io.rest-assured:json-path:${restVersion}"
testImplementation "io.rest-assured:xml-path:${restVersion}"
testImplementation "io.rest-assured:json-schema-validator:${restVersion}"
Run Code Online (Sandbox Code Playgroud)
其背后的原因可以在此链接中找到:java.lang.NoClassDefFoundError: io/restassured/mapper/factory/GsonObjectMapperFactory
对于那些懒得访问链接的人,这里有解释:
其根本原因是放心 *ObjectMapperFactory 包名称发生变化,例如版本 3.x 和 4.x 之间。
对于在发布 Rest-assured 4.0.0 后遇到此问题的任何人,此问题可能会出现在 Spring Boot 项目中 - 由 spring 中的 Rest-assured 及其对 json-path 和 xml-path 的传递依赖项之间的版本不匹配引起 -启动依赖项 bom。
如果指定依赖项 io.rest-assured:rest-assured:4.0.0,还需要显式包含 io.rest-assured:json-path:4.0.0 和 io.rest-assured:xml-path:4.0 .0,否则 spring-boot-dependency 将使用旧的 *ObjectMapperFactory 包名称引入版本 3.1.1。
| 归档时间: |
|
| 查看次数: |
4542 次 |
| 最近记录: |