1

私は単純なプロジェクト Spring ブート プロジェクトを持っています。これには、Jersey ベースのコントローラーが 1 つ含まれています。 @Path("persons") @Produces(MediaType.APPLICATION_JSON) public class PersonsController {

    @GET
    public Person get() {
        return new Person("James", 20);
    }
}

期待どおりに json 応答を返します (url: http://localhost:PORT/persons ):

{
  "name": "James",
  "age": 20
}

私の目的は、このコントローラーに Spring Cloud Contract テストを追加することです。必要なすべての mvn 構成を追加し、テストします。

public class MvcTest {
    @Before
    public void setup() {
        RestAssuredMockMvc.standaloneSetup(new PersonsController());
    }
}

コントラクト (groovy ファイル) は次のとおりです: import org.springframework.cloud.contract.spec.Contract

Contract.make {
    request {
        method 'GET'
        url('persons')
    }
    response {
        status 200
        body(
                "name": "James",
                "age": 20
        )
    }
}

次のエラーを実行するとmvn clean package、常に返されます: Failed tests:

  ContractVerifierTest.validate_getTest:26 expected:<[200]> but was:<[404]>

ジャージーのパスが表示されないため、これは ServletDispatcher に関連していると思います。@Path を @RequestMapping に置き換えた同じプロジェクトが機能します。ただし、Jersey で動作させる必要があります。私は何かを逃しましたか?

4

1 に答える 1

2

jaxrs サポートに関するセクションを確認しましたか? https://cloud.spring.io/spring-cloud-contract/1.0.x/spring-cloud-contract.html#_jax_rs_support . ここに、それを使用する方法の例がありますhttps://github.com/spring-cloud/spring-cloud-contract/tree/1.0.x/spring-cloud-contract-tools/spring-cloud-contract-gradle- plugin/src/test/resources/functionalTest/sampleJerseyProject

于 2016-12-17T12:53:56.780 に答える