Spring Boot n'exécute pas de tests unitaires

www

Comment puis-je exécuter des tests unitaires pour l'application Spring Boot lors de la création et du déploiement à l'aide de la spring boot:runcommande.

Je m'attends à ce que tous mes tests unitaires soient exécutés avant d'exécuter l'application, mais je ne veux pas faire une autre commande maven comme mvn testavant.

Mon problème: j'ai créé une simple application Spring Boot et je pourrais trouver un moyen d'exécuter des tests unitaires tout en exécutant l'application à partir d'intellij ou de la ligne de commande. Premièrement, je pensais que j'avais peut-être une mauvaise configuration ou de mauvais noms de classe de test ou peut-être une mauvaise structure de projet. J'ai donc créé une application de démarrage de printemps à partir d'un modèle intellij. À mon bonheur, il avait déjà un test par défaut écrit donc je lance simplement l'application. Malheureusement, le test n'a pas été exécuté.

Ceci est une capture d'écran de la structure du projet, pom.xml, de la classe principale et du test unitaire créés par intellij. Projet créé par intetelij

J'ai changé le lanceur de test et le test pour échouer et j'ai essayé à nouveau. Même résultat. test unitaire modifié pour échouer

J'ai recherché sur Google ce qui est caché sous la spring boot:runcommande ici http://docs.spring.io/spring-boot/docs/current/maven-plugin/run-mojo.html

J'ai trouvé quelque chose d'intéressant en haut du manuel: "Invoque l'exécution de la phase de test-compilation du cycle de vie avant de s'exécuter." Donc, je crois comprendre que cette commande ne compile que les tests mais ne les exécute pas? Si oui, la question est - Est-il possible d'ajouter une phase de "test" en ajoutant un drapeau à la commande?

Olambert

Votre problème ici est lié au cycle de vie de maven. Selon la documentation du spring-boot:run, il se lie validatepar défaut à la phase du cycle de vie et appelle la phase test-compileavant de s'exécuter.

Ce que vous demandez, c'est d' exécuter les tests avant d'exécuter l'application. Vous pouvez le faire avec un profil maven personnalisé dans votre POM - quelque chose comme ce qui suit.

<project>
    <profiles>
        <profile>
            <id>test-then-run</id>
            <build>
                <defaultGoal>verify</defaultGoal>
                <plugins>
                    <plugin>
                        <groupId>org.springframework.boot</groupId>
                        <artifactId>spring-boot-maven-plugin</artifactId>
                        <executions>
                            <execution>
                                <id>spring-boot-run</id>
                                <phase>verify</phase>
                                <goals>
                                    <goal>run</goal>
                                </goals>
                                <inherited>false</inherited>
                            </execution>
                        </executions>
                    </plugin>
                </plugins>
            </build>
        </profile>
        ...
    </profiles>
...
</project>

Avec ceci dans votre POM, vous pouvez ensuite exécuter les tests et démarrer l'application avec:

mvn -P test-then-run

Cela lie l' runobjectif à la verifyphase au lieu de la validatephase, ce qui signifie que les tests seront exécutés en premier. Vous pouvez voir dans quel ordre les phases sont exécutées ici: https://maven.apache.org/ref/3.3.9/maven-core/lifecycles.html

Cet article est collecté sur Internet, veuillez indiquer la source lors de la réimpression.

En cas d'infraction, veuillez [email protected] Supprimer.

modifier le
0

laisse moi dire quelques mots

0commentaires
connexionAprès avoir participé à la revue

Articles connexes

TOP liste

  1. 1

    Comment utiliser HttpClient avec TOUT cert ssl, quelle que soit la « mauvaise » est

  2. 2

    Comment afficher du texte au milieu de div avec une couleur d'arrière-plan différente?

  3. 3

    Résultat de l'échantillonneur JMeter : comprendre le temps de chargement, le temps de connexion et la latence

  4. 4

    Pourquoi Object.hashCode () ne suit pas la convention du code Java

  5. 5

    Modbus Python Schneider PM5300

  6. 6

    Comment faire une recherche partielle et obtenir un score pertinent dans Elasticsearch

  7. 7

    Autocomplete avec java, Redis, Recherche élastique, Mongo

  8. 8

    Comment choisir le nombre de fragments et de répliques Elasticsearch

  9. 9

    optimiser les opérations du serveur avec elasticsearch: traitement des filigranes de disque bas

  10. 10

    MasterService d'ElasticSearch prend trop de temps pour calculer l'état du cluster et lancer ProcessClusterEventTimeoutException

  11. 11

    Comment changer la couleur de la police dans R?

  12. 12

    Comment vérifier si un utilisateur spécifique a un rôle? Discord js

  13. 13

    Existe-t-il un moyen de voir si mon bot est hors ligne ?

  14. 14

    Faire une requête HTTP avec Elixir et Phoenix

  15. 15

    Spring @RequestParam DateTime format comme ISO 8601 Date Heure facultative

  16. 16

    Comment analyser un hachage Ruby plat en un hachage imbriqué?

  17. 17

    Comment empêcher Spring Boot de créer automatiquement une instance du bean 'entityManagerFactory' au démarrage?

  18. 18

    Ajustement non linéaire avec R

  19. 19

    Quelque chose dans le cluster Elasticsearch 7.4 devient de plus en plus lent avec les délais de lecture de temps en temps

  20. 20

    comment afficher un bouton au-dessus d'un autre élément ?

  21. 21

    Comment créer une nouvelle application dans Dropbox avec des autorisations complètes

chaudétiquette

Archive