_REST Assured v4.3.0
_を使用してコントローラクラスで定義されたREST apiをテストしようとしていますが、テストを実行すると_Java.lang.AbstractMethodError
_が表示されます。このエラーが発生していることを理解しています私は抽象メソッドを呼び出しているのですが、それを解決するのに苦労しています。
この行を削除するとテストが成功するため、_SampleControllerTest.Java
_の.body(is(equalTo("success")))
が原因でエラーが発生しているようです。私はそれを解決するためにいくつかのことを試みましたが、成功しませんでした:
io.rest-assured/spring-mock-mvc
_に関連していませんorg.hamcrest.Matchers.*
_および_org.hamcrest.CoreMatchers.*
_)を試したorg.hamcrest/hamcrest
_依存関係を明示的に追加しようとしましたあなたの参照のための私のコードはここにあります:
コード構造:
_test
|- src/
| |- main/
| | |- Java/
| | | |- org/
| | | | |- example/
| | | | | |- Application.Java
| | | | | |- SampleController.Java
| |- test/
| | |- Java/
| | | |- org/
| | | | |- example/
| | | | | |- SampleControllerTest.Java
|- target/
|- pom.xml
_
Application.Java
_package org.example;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
@SpringBootApplication
public class Application {
public static void main(String[] args) {
SpringApplication.run(Application.class, args);
}
}
_
SampleController.Java
_package org.example;
import org.springframework.http.HttpStatus;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseStatus;
import org.springframework.web.bind.annotation.RestController;
@RestController
public class SampleController {
@RequestMapping(value = "/sample")
@ResponseStatus(value = HttpStatus.OK)
public String getSample() {
return "success";
}
}
_
SampleControllerTest.Java
_package org.example;
import org.junit.Test;
import static io.restassured.module.mockmvc.RestAssuredMockMvc.*;
import static org.hamcrest.Matchers.*;
import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.status;
public class SampleControllerTest {
@Test
public void testGetSample() {
given()
.standaloneSetup(new SampleController())
.when()
.get("/sample")
.then()
.assertThat(status().isOk())
.body(is(equalTo("success")));
}
}
_
pom.xml
_<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.Apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.Apache.org/POM/4.0.0 http://maven.Apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<packaging>jar</packaging>
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.2.1.RELEASE</version>
<relativePath/> <!-- lookup parent from repository -->
</parent>
<groupId>org.example</groupId>
<artifactId>test</artifactId>
<version>1.0-SNAPSHOT</version>
<properties>
<Java.version>8</Java.version>
<start-class>org.example.Application</start-class>
</properties>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<!-- JUnit -->
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.12</version>
<scope>test</scope>
</dependency>
<!-- https://mvnrepository.com/artifact/io.rest-assured/spring-mock-mvc -->
<dependency>
<groupId>io.rest-assured</groupId>
<artifactId>spring-mock-mvc</artifactId>
<version>4.3.0</version>
<scope>test</scope>
</dependency>
<!-- https://mvnrepository.com/artifact/io.rest-assured/json-path -->
<dependency>
<groupId>io.rest-assured</groupId>
<artifactId>json-path</artifactId>
<version>4.3.0</version>
</dependency>
<!-- https://mvnrepository.com/artifact/io.rest-assured/xml-path -->
<dependency>
<groupId>io.rest-assured</groupId>
<artifactId>xml-path</artifactId>
<version>4.3.0</version>
</dependency>
<!-- https://mvnrepository.com/artifact/io.rest-assured/rest-assured -->
<dependency>
<groupId>io.rest-assured</groupId>
<artifactId>rest-assured</artifactId>
<version>4.3.0</version>
<scope>test</scope>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>
</project>
_
_mvn test
_を使用してテストを実行すると、次のエラーが発生します。
_[ERROR] Tests run: 1, Failures: 0, Errors: 1, Skipped: 0, Time elapsed: 1.325 s <<< FAILURE! - in org.example.SampleControllerTest
[ERROR] testGetSample(org.example.SampleControllerTest) Time elapsed: 1.288 s <<< ERROR!
Java.lang.AbstractMethodError: Method io/restassured/internal/ResponseSpecificationImpl.getProperty(Ljava/lang/String;)Ljava/lang/Object; is abstract
at org.example.SampleControllerTest.testGetSample(SampleControllerTest.Java:20)
_
事前に助けをありがとう!
io.rest-assured/spring-mock-mvc
依存関係がio.rest-assured/rest-assured
依存関係と競合していたことがわかりました。 io.rest-assured/rest-assured
をpom.xml
から削除すると、テストは成功しました。
数年前、REST保証バージョン3.1.1
を使用していたとき、これらの依存関係を両方とも維持できましたが、新しいバージョンではこれが許可されていない可能性があります。