web-dev-qa-db-fra.com

SpringApplicationConfiguration not found: contenu erroné de spring-boot-starter-test?

Obtenir une erreur de compilation dans Maven:

[INFO] -------------------------------------------------------------
[ERROR] COMPILATION ERROR : 
[INFO] -------------------------------------------------------------
[ERROR] /C:/prototypes/demo-sse-spring-boot-master/src/test/Java/com/cedric/demo/sse/SseDemoApplicationTests.Java:[6,37] package org.springframework.boot.test does not exist
[ERROR] /C:/TITAN/demo-sse-spring-boot-master/src/test/Java/com/cedric/demo/sse/SseDemoApplicationTests.Java:[10,2] cannot find symbol
  symbol: class SpringApplicationConfiguration
[INFO] 2 errors 
[INFO] -------------------------------------------------------------
[INFO] ------------------------------------------------------------------------
[INFO] BUILD FAILURE
[INFO] ------------------------------------------------------------------------

Maven repo semble avoir le pot présent:

enter image description here

cependant, jar ne contient aucune classe compilée. uniquement le répertoire META-INF:

enter image description here

Est-ce à dessein? Où puis-je me procurer le fichier jar contenant la classe SpringApplicationConfiguration pour rendre Maven heureux?

Voici les parties pertinentes de mon pom.xml:

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

    <properties>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
        <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>

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-devtools</artifactId>
        </dependency>

        <dependency>
            <groupId>org.webjars.bower</groupId>
            <artifactId>jquery</artifactId>
            <version>2.1.3</version>
        </dependency>

        <dependency>
            <groupId>org.webjars</groupId>
            <artifactId>bootstrap</artifactId>
            <version>3.3.1</version>
        </dependency>
        <dependency>
            <groupId>org.projectlombok</groupId>
            <artifactId>lombok</artifactId>
            <version>1.16.4</version>
        </dependency>
    </dependencies>

    <build>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
            </plugin>
        </plugins>
    </build>
19
Simeon Leyzerzon

spring-boot-starter-test, comme tous les autres démarreurs Spring Boot, n’est en réalité qu’un simple pompon qui introduit de manière transitoire un certain nombre d’autres dépendances. Il ne dispose que d'un bocal pour que certains systèmes de compilation qui n'aiment pas les dépendances de pom seulement soient satisfaits.

Il semble que vous ayez mis à niveau une application de Spring Boot 1.4 à Spring Boot 1.5. Spring Boot 1.5 supprime un certain nombre de classes obsolètes dans la version 1.4, notamment org.springframework.boot.test.SpringApplicationConfiguration.

Je recommanderais de revenir à Spring Boot 1.4.4.RELEASE et de corriger tous les avertissements relatifs à la dépréciation. Vous devriez alors pouvoir passer à Spring Boot 1.5.1.RELEASE sans difficulté.

18
Andy Wilkinson

Dans votre communiqué, le @SpringApplicationConfiguration l'annotation n'existe plus. Les nouvelles annotations sont:

@RunWith(SpringRunner.class)

@SpringBootTest(classes = YourApplicationMainClass.class)

@WebAppConfiguration
76
Mohamed

Comme l'erreur est due à la mise à niveau de Spring Boot de la version 1.4 à la version 1.5, il est important de noter (ci-dessous) que plusieurs nouvelles classes introduites dans la version 1.4 ont obsolète certaines des classes existantes, conduisant ainsi à la suppression définitive dans la version 1.5. Les détails de tels peuvent être trouvés à: Notes de version de démarrage de printemps

Cité du site Web (édité):

De plus, Spring Boot 1.4 (et supérieur) tente de rationaliser et de simplifier les différentes manières d’exécuter un test Spring Boot. Vous devez migrer les éléments suivants pour utiliser la nouvelle annotation @SpringBootTest:

De @SpringApplicationConfiguration(classes=MyConfig.class) à @SpringBootTest(classes=MyConfig.class)

De @ContextConfiguration(classes=MyConfig.class, loader=SpringApplicationContextLoader.class) à @SpringBootTest(classes=MyConfig.class)

De @IntegrationTest à @SpringBootTest(webEnvironment=WebEnvironment.NONE)

De @IntegrationTest avec @WebAppConfiguration à @SpringBootTest(webEnvironment=WebEnvironment.DEFINED_PORT) (or RANDOM_PORT)

De @WebIntegrationTest à @SpringBootTest(webEnvironment=WebEnvironment.DEFINED_PORT) (or RANDOM_PORT)

Conseil Lors de la migration des tests, vous pouvez également vouloir remplacer les déclarations @RunWith(SpringJUnit4ClassRunner.class) par Spring 4.3 par plus lisibles @RunWith(SpringRunner.class).

16
VanagaS