TP2 : Test logiciel (correction)
A. Création de Projet
1. Sous Eclipse, construire un projet Java intitulé TP2_VotreNom_VotrePrénom.
2. Créer un document Word intitulé : TP2_VotreNom_VotrePré[Link]. Ce document contiendra les
captures d'écran et les explications.
B. SommeArgent
1. Réaliser la classe SommeArgent comme suit :
public class SommeArgent {
private int quantite;
private String unite;
public SommeArgent(int amount, String currency) {
quantite = amount;
unite = currency;
public int getQuantite() {
return quantite;
public String getUnite() {
return unite;
public SommeArgent add(SommeArgent m) {
return new SommeArgent(getQuantite() + [Link](), getUnite());
}
TP2 : Test logiciel (correction)
Explication : Cette classe permet de créer des objets représentant une somme d'argent avec une quantité et
une unité, et d'additionner deux sommes d'argent.
2. Tester la méthode add :
import static [Link];
import [Link];
public class SommeArgentTest {
@Test
public void test_somme() {
SommeArgent s1 = new SommeArgent(12, "DT");
SommeArgent s2 = new SommeArgent(14, "DT");
SommeArgent expected = new SommeArgent(26, "DT");
SommeArgent result = [Link](s2);
assertEquals([Link](), [Link]());
assertEquals([Link](), [Link]());
Explication : Ce test vérifie que l'addition de deux sommes produit bien le résultat attendu.
C. Encore SommeArgent
1. Ajouter la méthode equals() dans SommeArgent :
@Override
public boolean equals(Object obj) {
if (this == obj)
TP2 : Test logiciel (correction)
return true;
if (obj == null || getClass() != [Link]())
return false;
SommeArgent other = (SommeArgent) obj;
return quantite == [Link] && [Link]([Link]);
Explication : Cette méthode permet de comparer deux sommes d'argent pour savoir si elles sont égales.
2. Tester la méthode equals() :
@Test
public void test_egalite() {
SommeArgent s1 = new SommeArgent(12, "DT");
SommeArgent s2 = new SommeArgent(14, "DT");
SommeArgent sUSD = new SommeArgent(14, "USD");
assertEquals(s1, s1);
assertEquals(s2, new SommeArgent(14, "DT"));
assert ();
assert ();
assert ();
Explication : Le test vérifie la cohérence de l'égalité entre objets.
3. Factoriser les initialisations communes :
private SommeArgent s1;
private SommeArgent s2;
private SommeArgent sUSD;
TP2 : Test logiciel (correction)
@Before
public void setUp() {
s1 = new SommeArgent(12, "DT");
s2 = new SommeArgent(14, "DT");
sUSD = new SommeArgent(14, "USD");
Explication : Cela évite de répéter l'initialisation dans chaque test.
D. Porte-Monnaie
1. Construire la classe PorteMonnaie :
import [Link];
public class PorteMonnaie {
private HashMap<String, Integer> contenu;
public PorteMonnaie() {
contenu = new HashMap<>();
public HashMap<String, Integer> getContenu() {
return contenu;
2. Ajouter la méthode ajouteSomme() :
public void ajouteSomme(SommeArgent sa) {
String unite = [Link]();
int quantite = [Link]();
TP2 : Test logiciel (correction)
[Link](unite, [Link](unite, 0) + quantite);
Explication : Cette méthode ajoute une somme dans le porte-monnaie, en cumulant les quantités si la devise
existe déjà.
3. Ajouter la méthode toString() :
@Override
public String toString() {
return [Link]();
Explication : Permet d'afficher facilement le contenu du porte-monnaie.
4. Ajouter la méthode equals() :
@Override
public boolean equals(Object obj) {
if (this == obj)
return true;
if (obj == null || getClass() != [Link]())
return false;
PorteMonnaie other = (PorteMonnaie) obj;
return [Link]([Link]);
Explication : Deux porte-monnaies sont égaux si leurs contenus sont identiques.
5. Construire la classe de test PorteMonnaieTest :
TP2 : Test logiciel (correction)
import static [Link];
import [Link];
import [Link];
public class PorteMonnaieTest {
private PorteMonnaie pm1;
private PorteMonnaie pm2;
@Before
public void setUp() {
pm1 = new PorteMonnaie();
pm2 = new PorteMonnaie();
@Test
public void test_ajouteSomme() {
[Link](new SommeArgent(5, "DT"));
[Link](new SommeArgent(5, "DT"));
[Link](new SommeArgent(10, "DT"));
assertEquals(pm1, pm2);
Explication : Ce test vérifie que l'ajout successif de deux sommes produit bien le même résultat qu'une seule
somme équivalente.