TP #2 - Configuration Java
Partie 1 - Prise en main Spring Test
- Ajouter la dépendance vers spring-test :
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-test</artifactId>
</dependency>
- Créer une classe dev.paie.entite.ResultatCalculRemuneration :
public class ResultatCalculRemuneration {
private String salaireDeBase;
private String salaireBrut;
private String totalRetenueSalarial;
private String totalCotisationsPatronales;
private String netImposable;
private String netAPayer;
// TODO getters & setters à générer
}
- Créer une interface dev.paie.service.CalculerRemunerationService :
public interface CalculerRemunerationService {
ResultatCalculRemuneration calculer(BulletinSalaire bulletin);
}
- Créer une implémentation dev.paie.service.CalculerRemunerationServiceSimple :
@Service
public class CalculerRemunerationServiceSimple implements CalculerRemunerationService {
...
}
- Créer une classe dev.paie.config.ServicesConfig de configuration pour les services de l'application :
@Configuration
@ComponentScan("dev.paie.service")
public class ServicesConfig {
}
Cette configuration permet de rechercher des beans Spring dans le package dev.paie.service.
- Créer une classe de test dev.paie.service.CalculerRemunerationServiceSimpleTest :
// Sélection des classes de configuration Spring à utiliser lors du test
@ContextConfiguration(classes = { ServicesConfig.class })
// Configuration JUnit pour que Spring prenne la main sur le cycle de vie du test
@RunWith(SpringRunner.class)
public class CalculerRemunerationServiceSimpleTest {
@Autowired private CalculerRemunerationService remunerationService;
@Test
public void test_calculer() {
// TODO remplacer null par un objet bulletin
ResultatCalculRemuneration resultat = remunerationService.calculer(null);
assertThat(resultat.getSalaireBrut(), equalTo("2683.30"));
assertThat(resultat.getTotalRetenueSalarial(), equalTo("517.08"));
assertThat(resultat.getTotalCotisationsPatronales(), equalTo("1096.13"));
assertThat(resultat.getNetImposable(), equalTo("2166.22"));
assertThat(resultat.getNetAPayer(), equalTo("2088.41"));
}
}
- Exécuter la classe de test. Vérifier que le service CalculerRemunerationService est bien injecté.
Partie 2 - Implémentation CalculerRemunerationServiceSimple
Compléter la classe de test CalculerRemunerationServiceSimpleTest pour injecter un objet de type BulletinSalaire provenant du jeux de données existant. Utiliser cet objet lors de l'appel à la méthode calculer.
Implémenter le service comme suit pour que le test soit passant :
SALAIRE_BASE = GRADE.NB_HEURES_BASE * GRADE.TAUX_BASE
SALAIRE_BRUT = SALAIRE_BASE + PRIME_EXCEPTIONNELLE
TOTAL_RETENUE_SALARIALE = SOMME(COTISATION_NON_IMPOSABLE.TAUX_SALARIAL*SALAIRE_BRUT)
TOTAL_COTISATIONS_PATRONALES = SOMME(COTISATION_NON_IMPOSABLE.TAUX_PATRONAL*SALAIRE_BRUT)
NET_IMPOSABLE = SALAIRE_BRUT - TOTAL_RETENUE_SALARIALE
NET_A_PAYER = NET_IMPOSABLE - SOMME(COTISATION_IMPOSABLE.TAUX_SALARIAL*SALAIRE_BRUT)
Indication:
- Exemple de récupération d'une configuration XML
// Marque un bean de configuration Spring
@Configuration
// Import de la configuration XML dans une configuration Java
@ImportResource("classpath:jdd-config.xml")
public class JeuxDeDonneesConfig {
}