2017-09-27 5 views
1

Lors de l'exécution du test PACT JVM, une erreur de suivi s'est produite. En fait, avant cette erreur, il y a une autre erreur de scala, après avoir ajouté une dépendance à la scala, ce problème a été résolu, mais celui-ci est arrivé.Pacte JVM a également besoin d'installer les dépendances scala et scala?

java.lang.NoClassDefFoundError: scala/Product$class 
    at au.com.dius.pact.model.RequestMatching.<init>(RequestMatching.scala:7) 
    at au.com.dius.pact.model.RequestMatching$.apply(RequestMatching.scala:7) 
    at au.com.dius.pact.model.RequestMatching.apply(RequestMatching.scala) 
    at au.com.dius.pact.consumer.BaseMockServer.<init>(MockHttpServer.kt:61) 
    at au.com.dius.pact.consumer.MockHttpServer.<init>(MockHttpServer.kt:202) 
    at au.com.dius.pact.consumer.MockHttpServerKt.mockServer(MockHttpServer.kt:34) 
    at au.com.dius.pact.consumer.ConsumerPactRunnerKt.runConsumerTest(ConsumerPactRunner.kt:12) 
    at au.com.dius.pact.consumer.ConsumerPactTestMk2.testPact(ConsumerPactTestMk2.java:26) 

Voici mon code: `public class ContractTest étend ConsumerPactTestMk2 {

@Rule 
    public PactProviderRuleMk2 mockProvider = new PactProviderRuleMk2("test_provider", "localhost", 5055, this); 

    @Override 
    @Pact(provider="test_provider", consumer="test_consumer") 
    protected RequestResponsePact createPact(PactDslWithProvider builder) { 
     Map<String, String> headers = new HashMap<String, String>(); 
     headers.put("testreqheader", "testreqheadervalue"); 

     JSONObject updateJsonObj = new JSONObject(); 
     JSONObject updateVersion = new JSONObject(); 
     updateVersion.put("version", "1.4"); 
     updateJsonObj.put("update", updateVersion); 
     return builder.given("test state 1") // NOTE: Using provider states are optional, you can leave it out 
       .uponReceiving("ExampleJavaConsumerPactTest test interaction") 
        .path("/hostService/hosts/1") 
        .method("PUT") 
        .body(updateJsonObj) 
       .willRespondWith() 
        .status(200) 
        .body(updateJsonObj) 
       .given("test state 2") // NOTE: Using provider states are optional, you can leave it out 
       .uponReceiving("ExampleJavaConsumerPactTest second test interaction") 
        .method("GET") 
        .path("/hostService/hosts/1") 
        .body("") 
       .willRespondWith() 
        .status(200) 
        .body("") 
       .toPact(); 
    } 

    @Override 
    protected String providerName() { 
     return "test_provider"; 
    } 

    @Override 
    protected String consumerName() { 
     return "test_consumer"; 
    } 

    @Override 
    protected void runTest(MockServer mockServer) throws IOException { 
     HttpClient httpClient = HttpClients.createDefault();   
     HttpPut putReq = new HttpPut(mockServer.getUrl()); 
     HttpGet getReq = new HttpGet(mockServer.getUrl()); 

     HttpResponse response = httpClient.execute(getReq);  
     Assert.assertEquals(response.getStatusLine().getStatusCode(), 200); 

     response = httpClient.execute(putReq); 
     Assert.assertEquals(getVersion(response.getEntity().toString()), "1.3"); 
    } 

`

+0

Quelles sont les versions du pacte dépendances utilisez-vous? –

+0

ma version est 3.5.5 –

+0

J'ai eu le même problème. J'ai ajouté une réponse pour vous. –

Répondre

1

Il semble que les dépendances pour la version 3.5.5 are a little broken. Pour l'instant, vous avez deux options:

  1. travail autour en rétrogradant à la version 3.5.4

  2. Inclure les dépendances manquantes explicitement. Pour moi, ce fut: