0

J'ai une application basée sur le démarrage au printemps, et le fichier pom.xml est configuré comme ci-dessous.Comment exécuter le test d'intégration d'une application basée sur le démarrage à ressort via maven-failsafe-plugin?

<?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> 

    <groupId>com.example</groupId> 
    <artifactId>demo</artifactId> 
    <version>0.0.1-SNAPSHOT</version> 
    <packaging>jar</packaging> 

    <name>demo</name> 
    <description>Demo project for Spring Boot</description> 

    <parent> 
     <groupId>org.springframework.boot</groupId> 
     <artifactId>spring-boot-starter-parent</artifactId> 
     <version>1.5.7.RELEASE</version> 
     <relativePath/> <!-- lookup parent from repository --> 
    </parent> 

    <properties> 
     <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> 
     <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding> 
     <java.version>1.8</java.version> 
    </properties> 

    <dependencies> 
     <dependency> 
      <groupId>org.springframework.boot</groupId> 
      <artifactId>spring-boot-starter-web</artifactId> 
     </dependency> 

     <dependency> 
      <groupId>org.springframework.boot</groupId> 
      <artifactId>spring-boot-starter-test</artifactId> 
      <scope>test</scope> 
     </dependency> 
    </dependencies> 

    <build> 
     <plugins> 
      <plugin> 
       <groupId>org.springframework.boot</groupId> 
       <artifactId>spring-boot-maven-plugin</artifactId> 
       <configuration> 
        <classifier>exec</classifier> 
       </configuration> 
      </plugin> 
      <plugin> 
       <groupId>org.apache.maven.plugins</groupId> 
       <artifactId>maven-failsafe-plugin</artifactId> 
       <version>2.20.1</version> 
       <configuration> 
        <includes> 
         <include>**/IT*.java</include> 
         <include>**/*IT.java</include> 
         <include>**/*ITCase.java</include> 
        </includes> 
       </configuration> 
       <executions> 
        <execution> 
         <goals> 
          <goal>integration-test</goal> 
          <goal>verify</goal> 
         </goals> 
        </execution> 
       </executions> 
      </plugin> 
     </plugins> 
    </build> 


</project> 

La méthode main situé dans la classe DemoApplication comme ci-dessous

package com.example.demo; 

import org.springframework.boot.SpringApplication; 
import org.springframework.boot.autoconfigure.SpringBootApplication; 

@SpringBootApplication 
public class DemoApplication { 

    public static void main(String[] args) { 
     System.out.println("This is a demo application+++++++++++++++++++"); 
     SpringApplication.run(DemoApplication.class, args); 
    } 
} 

Et ma classe de test d'intégration appelée DemoIT comme suit.

package com.example.demo; 

import org.junit.Test; 

public class DemoIT { 

    @Test 
    public void test() { 
     System.out.println("This is a integration test.=============="); 
    } 
} 

Maintenant, voici ma question, quand je commande mvn clean verify émets, la classe d'intégration DemoIT est censé être exécuté, et il le fait. Cependant, mon DemoApplication ne fonctionne pas. Donc, je me demande si mon test d'intégration doit être exécuté sous le contexte de l'application Spring-Boot (DemoApplication doit être en cours d'exécution), que dois-je faire pour y arriver?

Répondre

0

Depuis mon application est basée sur Spring-Boot et spring-boot-maven-plugin est inclus dans pom.xml, donc ce que je dois faire est d'ajouter la configuration suivante pour vous assurer que le cycle de vie de notre application de démarrage de printemps est bien géré autour.

<executions> 
    <execution> 
    <id>pre-integration-test</id> 
    <goals> 
     <goal>start</goal> 
    </goals> 
    </execution> 
    <execution> 
    <id>post-integration-test</id> 
    <goals> 
     <goal>stop</goal> 
    </goals> 
    </execution> 
</executions> 

Puis, quand je lance mvn clean verify, l'application de démarrage du printemps sera en cours d'exécution avec notre code de test d'intégration.

+0

Cela se produit par défaut. Droite?? Pardonnez-moi si je me trompe .. Je suis nouveau à cela! –