2
votes

Ajout d'une dépendance spring-cloud-starter-sleuth à une application Spring-Boot, une partie du test Rest Doc échouant

J'ai une application Spring-Boot 2.1.4 avec des tests n-RestDoc pour le contrôleur de Flux.

Environnement:

  • Spring-Boot 2.1.4
  • Junit 5.4.0
  • spring-restdocs-webtestclient
  • spring-webflux

Si j'ajoute la dépendance spring-clout-starter-sleuth à l'application, une partie du test doc échoue dans la construction maven. Important sur différents environnements, différentes classes de test échouent avec:

@ExtendWith({ RestDocumentationExtension.class, SpringExtension.class })
@AutoConfigureRestDocs("target/generated-snippets")
@SpringBootTest(//webEnvironment = SpringBootTest.WebEnvironment.RANDOM_PORT, 
        classes = { ArchimedesApplication.class })
class OptControllerDocTest {

   @MockBean
   private SrkConnector srkTConnector;

   @Autowired
   private ApplicationContext context;

   private WebTestClient webTestClient;

   @BeforeEach
   void beforeEach(RestDocumentationContextProvider restDocumentation) {
        this.webTestClient = WebTestClient.bindToApplicationContext(context)
              .configureClient() 
              .filter(documentationConfiguration(restDocumentation))
              .build();

   }

   @Test
   void documentationTest() throws IOException {

        this.webTestClient.post()
            .uri("/opt")
            .contentType(MediaType.APPLICATION_JSON)
            .body(BodyInserters.fromObject(testRequest))
            .exchange()
            .expectStatus()  // here the error occur
            .isOk()
            .expectBody() ...
    }

Si vous exécutez le test de vérification avec maven -Dtest = OptDocTest , le test n'échouera pas, également si un test d'ensemble (pas tous) était spécifié.

Dépendance

<dependency>
     <groupId>org.springframework.cloud</groupId>
     <artifactId>spring-cloud-starter-sleuth</artifactId>
     <version>2.1.1.RELEASE</version>
     <exclusions> <!-- exclude old spring versions -->
          <exclusion>
               <artifactId>*</artifactId>
               <groupId> org.springframework.security</groupId>
           </exclusion>
           <exclusion>
                <artifactId>spring-aop</artifactId>
                <groupId>org.springframework</groupId>
            </exclusion>
      </exclusions>
</dependency>
<dependency>
      <groupId>org.springframework</groupId>
      <artifactId>spring-aop</artifactId>
</dependency>

Tous les tests semblent similaires

java.lang.IllegalStateException: org.springframework.boot.web.reactive.context.AnnotationConfigReactiveWebServerApplicationContext@6516dd09 has been closed already ....

Tous les tests informatiques avec une application de démarrage en cours d'exécution fonctionne correctement.

Je n'ai aucune idée de ce qui ne va pas et pourquoi le AnnotationConfigReactiveWebServerApplicationContext est fermé.

Sur une boîte Windows, le test reste doc pour le contrôleur avec un contenu de flux échoue sur une boîte Linux pour le contrôleur avec un contenu mono.


5 commentaires

Pourquoi excluez-vous les versions Spring de la dépendance Sleuth?


Très facile - J'ai Spring Boot 2.1.4 et Spring-Framework 5.1.6 et j'ai commencé avec la version 2.1.0 de sleuth et cela avait des versions différentes, donc j'avais un mélange de versions de printemps.


Info: même comportement si je supprime toutes les exclusions de la dépendance de détective


Pourquoi modifiez-vous les versions de ressort? Il devrait provenir de Boot. De plus, il serait bon d'avoir le stacktrace complet ou des informations supplémentaires car actuellement je ne sais pas comment vous aider


spring-cloud-starter-sleuth vient de springframework.cloud et a sa propre dépendance et ne fait pas partie de spring-boot, mais il ne fait aucune différence car sans exclusions, la même erreur se produit.


3 Réponses :


0
votes

Il est résolu si je reviens à spring-cloud-starter-sleuth dans la version 2.1.0.RELEASE et si je supprime toutes les exclusions. utilisez la version 2.1.1.RELEASE l'erreur se produit.


1 commentaires

Et cela ne semble pas non plus avoir été résolu dans 2.1.3-RELEASE



0
votes

Même problème que j'ai également rencontré. J'ai résolu le problème en rétrogradant Sleuth à 2.0.3.RELEASE (2.1.0 ne fonctionne pas non plus avec moi). La version de Mine Spring Boot est 2.0.5.RELEASE .
Si la version 2.0.3 ne fonctionne toujours pas pour vous, essayez une version de rétrogradation supplémentaire à partir de mvn repo


0 commentaires

1
votes

Cela a été signalé comme un bogue dans la liste des problèmes de sleuth github github.com/spring-cloud/spring-cloud-sleuth/issues/1450

Si vous, comme moi, avez eu cette situation en ce qui concerne les tests junit, alors je l'ai résolue en supprimant toutes les annotations @DirtiesContext dans chaque classe de test junit que j'avais dans mon projet.


0 commentaires