Thông tin

Tác giả Munyabarenzi Clémentine Zaninka (ressource : Syllabus d'exercices LSINF1101)
Hạn chót Không có hạn chót
Giới hạn nộp bài Không có giới hạn

Đăng nhập

Mission 11 : Question de Démarrage 1 : JUnit (partie1)

Dans la phase de réalisation, vous devez utiliser des méthodes provenant du framework de test JUnit afin de tester votre implémentation dans BlueJ. L'objectif de cet exercice est d'utiliser les méthodes de JUnit pour vérifier le bon fonctionnement de la classe DList. ci-après :

class DList{
    List<Double> l;

    /**
     * @pre
     * @post a construit une liste initialement vide
     */
    public DList(){
        l = new LinkedList<Double>();
    }

    /**
     * @pre d != null
     * @post a ajouté le Double d dans la liste
     */
    public void add(Double d){
        assert d != null;
        l.add(d);
    }
    /**
     * @pre d != null
     * @post retourne true si d se trouvait dans la liste et false sinon
     *       a retire de la liste toutes les instances de Double egales a d
     */
    public boolean remove(Double d){
        assert d != null;
        int i = l.indexOf(d);
        if(i >= 0){
            Double d1 = l.remove(i);
            return true;
        }
        else{
            return false;
        }
    }

    /**
     * @pre d != null
     * @post retourne true si d se trouve dans la liste et false sinon
     */
    public boolean contains(Double d){
        return l.contains(d);
    }

    /**
     * @pre -
     * @post retourne le nombre de Double se trouvant dans la liste
     */
    public int size(){
        return l.size();
    }
}

Il vous est proposé une classe de test comme exemple dans laquelle les assertions JUnit ne sont que partiellement écrites. Lisez attentivement le code de cette classe afin de remplacer les blocs de commentaires du type /*(numero)???*/ par le code qui convient. Si cela est fait correctement, JUnit pourra détecter l'erreur contenue dans l'implémentation de la classe DList.

public static class DListTest extends junit.framework.TestCase{

    /**
     * @pre -
     * @post verifie le bon fonctionnement de la methode contains sur plusieurs
     *       exemples d'utilisation de la liste de Double: cette méthode vérifie
     *       que l'appel à la méthode contains réussit quand il le faut.
     */
    public void testReussiteContains(){
        // Creation de la liste
        DList l = new DList();

        // Ajout de trois Double
        l.add(new Double(2.3));
        l.add(new Double(2.4));
        l.add(new Double(2.4));

        // Verification sur base des elements ajoutes
        assertEquals("La verification de la presence d'un element present une fois dans la liste devrait renvoyer true", /*(1)???*/, /*(2)???*/);
        assertEquals("La verification de la presence d'un element present deux fois dans la liste devrait renvoyer true", /*(3)???*/, /*(4)???*/);
    }

    /**
     * @pre -
     * @post verifie le bon fonctionnement de la methode contains sur plusieurs
     *       exemples d'utilisation de la liste de Double: cette méthode vérifie
     *       que l'appel à la méthode contains échoue quand il le faut.
     */
    public void testEchecContains(){
        // Creation de la DList
        DList l = new DList();

        // Ajout de trois Double dans la DList
         l.add(new Double(2.3));
         l.add(new Double(2.4));
         l.add(new Double(2.4));

        // Verification vérification prennant en compte les éléments précédemment ajoutés
        assertEquals("La verification de la presence d'un element absent de la liste devrait renvoyer false", /*(5)???*/, /*(6)???*/);

        // Verification qu'un element supprimé n'est plus contenu dans la liste
        l.remove(new Double(2.3));
        assertEquals("La verification de la presence d'un element qui n'est plus present dans la liste devrait renvoyer false", /*(7)???*/, /*(8)???*/);
    }

Câu hỏi 1:
Câu hỏi 2:
Câu hỏi 3:
Câu hỏi 4:
Câu hỏi 5:
Câu hỏi 6:
Câu hỏi 7:
Câu hỏi 8: