RestAssured- 主体中的对象抛出错误

RestAssured- object in body throws Error

我通过测试的对象

@Data
public class UserRequest {
@JsonProperty("name")
private final String name;
@JsonProperty("surname")
private final String surname;
@JsonProperty("email")
private final String email;
@JsonProperty("iaAdmin")
private final boolean isAdmin;

}

比我测试的要好

@RunWith(SpringRunner.class)
@SpringBootTest(webEnvironment = SpringBootTest.WebEnvironment.RANDOM_PORT)
public class UserControllerIT {

@LocalServerPort
private int port;

@Test
public void testIsCreatingNewUser() throws IOException{
    given()
            .when()
            .body(new UserRequest("asd","sad","asd",false))//.body(TestGenerator.getUserRequest())
            .port(port)
            .post("/user/" + TestGenerator.randomUUID)
            .then()
            .statusCode(HttpStatus.SC_CREATED);
}

我收到错误:

java.util.ServiceConfigurationError: com.fasterxml.jackson.databind.Module: Provider com.fasterxml.jackson.module.kotlin.KotlinModule could not be instantiated

并在底部堆栈

Caused by: java.lang.ClassNotFoundException: kotlin.jvm.internal.DefaultConstructorMarker
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)
... 79 more

这是怎么回事?! Kotlin...我使用 java 和 spring boot v2.0 m3

我自己回答问题。感谢@Sebastian Duque 的评论,我从中添加了依赖项 http://www.baeldung.com/spring-boot-kotlin 它帮助...

<!--kotlin/ it needs jackson to map objects-->
    <dependency>
        <groupId>org.jetbrains.kotlin</groupId>
        <artifactId>kotlin-stdlib-jre8</artifactId>
        <version>1.1.2</version>
    </dependency>
    <dependency>
        <groupId>org.jetbrains.kotlin</groupId>
        <artifactId>kotlin-reflect</artifactId>
        <version>1.1.2</version>
    </dependency>
    <dependency>
        <groupId>com.fasterxml.jackson.module</groupId>
        <artifactId>jackson-module-kotlin</artifactId>
        <version>2.9.0</version>
    </dependency>


但奇怪的是 Spring Boot v2 中的 Jackson 需要 Kotlin 依赖项...我使用 spring-boot starter 中的 jackson 依赖项,所以我没有包含任何 jackson。

如果你使用 maven 从 spring-boot 依赖中排除

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-web</artifactId>
    <version>2.0.0.M6</version>
    <exclusions>
        <exclusion>
                <groupId>com.fasterxml.jackson.module</groupId>
                <artifactId>jackson-module-kotlin</artifactId>
        </exclusion>
    </exclusions>
 </dependency>

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-test</artifactId>
    <version>2.0.0.M6</version>
    <scope>test</scope>
    <exclusions>
        <exclusion>
           <groupId>com.fasterxml.jackson.module</groupId>
           <artifactId>jackson-module-kotlin</artifactId>
        </exclusion>
    </exclusions>
</dependency>

对于其他构建工具,请更新此解决方案