Spring boot & test
En travaillant avec Spring MVC, vous avez peut-être utilisé Spring MockMVC pour effectuer des tests sur les contrôleurs Spring web MVC. La classe MockMVC fait partie du cadre de test Spring MVC qui permet de tester les contrôleurs en démarrant explicitement un conteneur de servlets. Mais, cela ne fonctionnera pas si vous utilisez SpringBoot Webflux. Si vous avez une application Spring construite avec Webflux, les contrôleurs MVC peuvent être testés en utilisant WebTestClient.
https://www.baeldung.com/spring-boot-testing
https://spring.io/guides/gs/testing-web/
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.springframework.security</groupId>
<artifactId>spring-security-test</artifactId>
<scope>test</scope>
</dependency>
Exemple de classe test
package com.esi5.validebook.UserTest;
import com.esi5.validebook.entity.UserEntity;
import com.esi5.validebook.repository.*;
import org.junit.jupiter.api.Test;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.autoconfigure.orm.jpa.DataJpaTest;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.security.core.userdetails.UserDetails;
import org.springframework.security.crypto.password.PasswordEncoder;
import static org.assertj.core.api.Assertions.assertThat;
@SpringBootTest()
class UserRepositoryIntegrationTest {
@Autowired
UserRepository userRepository;
@Autowired
private PasswordEncoder passwordEncoder;
@Test
void contextLoads() {
}
@Test
public void whenFindByEmail_thenReturnUser() {
UserEntity user = new UserEntity();
user.setEmail("sguerfi@yahoo.com");
user.setNomComplet("GUERFIZ");
user.setAccountVerified(true);
user.setPassword(passwordEncoder.encode("123"));
user.setRoles("ADMIN");
userRepository.save(user);
UserEntity found = userRepository.findByEmail(user.getEmail());
assertThat(found.getEmail()).isEqualTo("sguerfi@yahoo.com");
}
}
Dans Cucumber, une story est composée de scénarios et chaque scénario est composé d'étapes. La story est (d)écrite en Gherkin dans un fichier .feature dans lequel on trouve :
le titre de la story introduit par le mot clé Feature ; Feature: <Titre de la fonctionnalité>
Un descriptif (optionnel) (qui ne sera pas interprété par Cucumber) permettant par exemple, de résumer la story à l'aide du template As..., I want to..., so that... et/ou de noter toute autre information utile à connaître ;
les scénarios de la story :
Chaque scénario est introduit par le mot clé Scenario. Ce mot clé peut être suivi ou non d'un titre qui décrit explicitement le critère d'acceptation de la story associée à ce scénario,
Un scénario étant un exemple concret qui illustre une règle métier, il est composé de plusieurs étapes. Les différentes étapes d'un scénario sont décrites à partir des trois principaux mots clés : Given, When et Then suivant la place et le rôle qu'elles occupent dans le scénario :
Given décrit les conditions initiales du scénario, c.-à-d. le contexte dans lequel va se dérouler le scénario,
When décrit une action effectuée par un utilisateur, c.-à-d. un événement qui va réellement déclencher le scénario,
Then décrit le comportement attendu, ce qui devrait se produire lorsque les conditions initiales sont remplies et l'action est effectuée.
Télécharger le fichier Maven ci-dessous
Décompresser le fichier
Ajouter la variable environnement
C:\>set M3_HOME=C:\.....\apache-maven-3.5.2
C:\>set M3=%M3_HOME%\bin
C:\>set PATH=%M3%
C:\>set JAVA_HOME=C:\Program Files\Java\jdk1.8.0_101
C:\>mvn --version
C:\
Apache Maven 3.5.2 (138edd61fd100ec658bfa2d307c43b76940a5d7d; 20
3+02:00)
Maven home: C:\Users\ababsa\apache-maven-3.5.2\bin\..
Java version: 1.8.0_101, vendor: Oracle Corporation
Java home: C:\Program Files\Java\jdk1.8.0_101\jre
Default locale: fr_FR, platform encoding: Cp1252
OS name: "windows 7", version: "6.1", arch: "amd64", family: "wi
Pour créer un projet maven
mvn archetype:generate
Tous les artifacts gérés par Maven sont identifiés par 4 informations :
groupId : Définit l'organisation ou groupe qui est à l'origine du projet. Il est formulé sous la forme d'un package Java (org.archetypejs par exemple)
artifactId : Définit le nom unique dans le groupe pour le projet.
version : Définit la version du projet. Les numéros de version sont souvent utilisés pour des comparaisons et des mises à jour.
type : Type de projet. On trouvera le plus souvent : jar, war, maven-plugin, pom...
Pour mettre dans repository locale dans le dossier .~/.m2/repository
mvn install
Pour mettre dans repository distant
mvn deploy
Dans le cycle de vie ’par défaut’ d’un projet Maven, les phases les plus utilisées sont :
validate : vérifie les prérequis d’un projet maven compile : compilation du code source test : lancement des tests unitaires package : assemble le code compilé en un livrable install : partage le livrable pour d’autres projets sur le même ordinateur deploy : publie le livrable pour d’autres projets dans un ’repository’ distant
Les phases s’exécutente de façon séquentielle de façon à ce qu’une phase dépende de la phase précédente.
Par exemple, le lancement par l’utilisateur de la phase test (mvn test) impliquera le lancement préalable par maven des phases ’validate’ et ’compile’.
ACTION : lancez une commande maven ’vide’ , c’est à dire tapez uniquement ’mvn’ en ligne de commande. MAven signale une erreur et précise la liste des phases disponible.
En particulier, voici la liste complète des phases pour un projet maven 2.2 :
— validate
— generate-sources
— process-sources
— generate-resources
— process-resources
— compile
— process-classes
— generate-test-sources
— process-test-sources
— generate-test-resources
— process-test-resources
— test-compile
— test
— prepare-package
— package
— integration-test
— verify
— install
— deploy
Pour compiler le projet1
C:\Users\guerfi\eclipse-workspace\projet1>mvn compile
Pour lancer les tests
C:\Users\guerfi\eclipse-workspace\projet1>mvn test