TP commit - Q3 - Memento

Programmation Avancée

Modérateur : douinj

charp_n1
Messages : 23
Inscription : 07 oct. 2020 17:35

TP commit - Q3 - Memento

Message par charp_n1 » 14 nov. 2020 19:20

Bonjour à tous,
Dans la question 3 (transaction) du TP commit, je suis un peu perdu.
J'ai implémenté une solution à base de 2 visiteurs comme le suggérait l'énoncé, en reconstruisant un objet Cotisant dans mon Memento.
Mais j'ai des erreurs sur JNews (debitSure7 par exemple) qui n'en disent hélas pas beaucoup plus :
Une exception est levée, alors que le débit est possible ???
Aïe... je ne serai pas banquier, c'est sûr :-)
Sérieusement, mes tests locaux passent, je ne comprends pas où je peux déclencher une exception à part dans mon visiteur de copie (puisque c'est la seule chose que j'ai codée, et que si le débit passe c'est qu'on ne fait pas de rollback). Mais j'ai beau chercher, je ne parviens pas à lever une exception sur un simple débit.

Quelqu'un a-t-il eu cette erreur ?

douinj
Messages : 204
Inscription : 18 mars 2009 15:46

Re: TP commit - Q3 - Memento

Message par douinj » 14 nov. 2020 19:42

Bonsoir, je n'ai pas cette erreur, mais le test incriminé pourrait, peut-être vous aider, et permettre d'enrichir les tests dits référents

L'enchainement des tests paraît cohérent, cela vient à priori de votre restitution, le rollback

à suivre...

Code : Tout sélectionner

 public void testTransactionDebitSure7(){  

        GroupeDeContributeurs g;

        g = new GroupeDeContributeurs("g");
        g.ajouter(new Contributeur("g_a",10));
        g.ajouter(new Contributeur("g_b",10));
        g.ajouter(new Contributeur("g_c",10));
        GroupeDeContributeurs g1 = new GroupeDeContributeurs("g1");
        g1.ajouter(new Contributeur("g1_a1",10));
        g1.ajouter(new Contributeur("g1_b1",10));
        g.ajouter(g1);
        GroupeDeContributeurs g2 = new GroupeDeContributeurs("g2");
        g2.ajouter(new Contributeur("g2_a1",10));
        g2.ajouter(new Contributeur("g2_b1",10));
        GroupeDeContributeurs g3 = new GroupeDeContributeurs("g3");
        g3.ajouter(new Contributeur("g3_a1",5));
        g2.ajouter(g3);
        g.ajouter(g2);
        AbstractTransaction transaction = new TransactionDebit(g);

        int ancienSolde = g.solde();
        transaction = new TransactionDebit(g);
        try{
            transaction.debit(10);
            fail("une exception doit être levée : la transaction a échoué");
        }catch(Exception e){
            assertTrue(e instanceof SoldeDebiteurException);
        }  	    
        assertTrue(" solde erroné, revoyez la transaction !!! ", g.solde()== ancienSolde);
        try{
            transaction.debit(5);
        }catch(Exception e){
            fail("une exception est levée, alors que le débit est possible ???");
        }
    }

charp_n1
Messages : 23
Inscription : 07 oct. 2020 17:35

Re: TP commit - Q3 - Memento

Message par charp_n1 » 16 nov. 2020 1:22

Merci pour le test, j'ai pu reproduire.
C'était une erreur qui trainait depuis la question 1 : je levais une SoldeDebiteurException dans le Contributeur quand mon solde final était <= 0...
Je suggère d'ajouter un test "solde final à 0" dans JNews pour la question 1.

Répondre